我有以下内容:
:caption => thread.thread_widgets.first.widgetable.title
如果线程有一个thread_widget,这是可选的。鉴于它是可选的,如果线程没有thread_widgets,则此错误
undefined method `widgetable' for nil:NilClass
有没有办法可以使用try(),以便错误不会杀死页面?
谢谢
:caption => (o = thread.thread_widgets.first) && o.widgetable.title
但是你要求Object#try,
这样:
:caption => thread.thread_widgets.first.try(:widgetable).try(:title)
另一个更好的选择是使用安全导航操作员&.
如下:
:caption => thread.thread_widgets.first&.widgetable&.title