任何人都可以说,为什么这段代码有效?
<% @products.each do |p| %>
<%= link_to p.name, product_path(p.id), :class => "title" %>
<%end%>
这不是吗?
<% @products.in_groups_of(2).each do |product_array| %>
<% product_array.each do |p| %>
<%= link_to p.name, product_path(p.id), :class => "title" %>
<% end %>
<%end%>
代码为nil提供了未定义方法`name'的错误:NilClass。 我没有得到它的线索。有人可以帮忙吗?
答案 0 :(得分:2)
如果记录不足,则会附加nil
,这就是为什么会出现nil:NilClass
错误
>> %w(1 2 3).in_groups_of(2) # => [["1", "2"], ["3", nil]]
>> %w(1 2 3).in_groups_of(2,false) # => [["1", "2"], ["3"]]
请参阅in_groups_of(number, fill_with = nil)
<% @products.in_groups_of(2, false).each do |product_array| %>
<% product_array.each do |p| %>
<%= link_to p.name, product_path(p.id), :class => "title" %>
<% end %>
<%end%>
答案 1 :(得分:0)
听起来你的产品数量很奇怪。如果您尝试将奇数分成两组,则最后一组中的最终产品将为零。你可以添加:
unless p.nil?
<%= link_to p.name, product_path(p.id), :class => "title" %>
end
确保您拥有实例。