我正在努力弄清楚为什么我不能让这个帮助器正常运行。 Item类具有对Product类的嵌套引用。如何在下面的帮助函数中正确访问“Product”属性?
module ItemHelper
def image_for(item)
if item.product.image_file_name.blank?
image_tag('placeholder.png')
else
image_tag(item.product.image_file_name)
end
end
end
我收到以下错误。 “nil的未定义方法`image_file_name':NilClass” 它是在另一个html文件中访问此image_for函数时发生的。我认为这是因为我无法访问item.product,我做错了。
以下代码实际上是功能代码,表明我已经设置了我认为是数据库和模型中正确的关系。
<ul id="items">
<% @items.each do |item| %>
<li>
<article class="item">
<header>
<h2><%= item.product.name %></h2>
</header>
<p>
<%= truncate(item.description, length: 150, separator: ' ') %>
</p>
<table>
<tr>
<th>Price</th>
<td><%= item.product.price %></td>
</tr>
</table>
<footer>
</footer>
</article>
</li>
<% end %>
</ul>
下面是我用来调用辅助函数的代码。
<article id="hint" class="hint">
<header>
<%= image_for(@hint) %>
<h1><%= @hint.name %></h1>
</header>
<p>
<%= @hint.description %>
</p>
<footer>
</footer>
</article>
有人有任何建议吗?
答案 0 :(得分:0)
试试这段代码:
def image_for(item)
if item.product.nil? || item.product.image_file_name.blank?
image_tag('placeholder.png')
else
image_tag(item.product.image_file_name)
end
end