我有以下内容:
:caption => thread.thread_widgets.first.widgetable.title
如果线程有一个thread_widget,这是可选的。鉴于它是可选的,如果线程没有thread_widgets,那么这个错误带有
undefined method `widgetable' for nil:NilClass
有没有办法可以使用try(),以便错误不会杀死页面?
由于
答案 0 :(得分:4)
:caption => (o = thread.thread_widgets.first) && o.widgetable.title
但你问Object#try,
所以:
:caption => thread.thread_widgets.first.try(:widgetable).try(:title)
答案 1 :(得分:0)
另一个更好的选择是使用安全导航操作符 &.
,如下所示:
:caption => thread.thread_widgets.first&.widgetable&.title