我有一个rails标签来调用像这样的对象的属性
<%= item.product.name %>
但是我得到了错误未定义的方法&#39;产品&#39;对于nilClass。我尝试使用类似下面代码的try()方法,它允许来自产品的nill对象,
<%= item.try(:[], 'product') %>,
但我现在不知道如何从产品中获取名称属性。
编辑:
我试试这段代码item.try(:product).try(:[], :name)
和@Andrey Daineko先生以及@santhosh先生建议的相同代码,
如果产品不是nill,那就是结果
但如果产品是nill,它仍会出现此错误,
答案 0 :(得分:3)
使用安全导航(可从Ruby 2.3.0获得):
item&.product&.name
# for Ruby < 2.3.0
item.try(:product).try(:name)
对于哈希使用Hash#dig
(可从Ruby 2.3.0获得):
hash.dig(:foo, :bar, :baz)
# for Ruby < 2.3.0
hash.fetch(:foo, {}).fetch(:bar, {}).fetch(:baz, {})
答案 1 :(得分:2)
您可以尝试尝试使用try
的返回值new
或者如果产品是哈希,
item.try(:product).try(:name)