1

谁能告诉,为什么这段代码有效?

    <% @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:NilClass 的未定义方法“名称”的错误。我没有得到它的线索。有人可以帮忙吗?

4

2 回答 2

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%>
于 2013-03-05T08:36:41.787 回答
0

听起来您的产品数量是奇数。如果您尝试将奇数分成两组,最后一组中的最终产品将为 nil。您可以添加:

unless p.nil?
  <%= link_to p.name, product_path(p.id), :class => "title" %>
end

以确保您有一个实例。

于 2013-03-05T08:32:07.180 回答