我在视图中使用它:
<% @line_items.group_by(&:year).each do |year, line_items| %>
<h2><%= year %></h2>
<% line_items.group_by(&:month).each do |month, lines| %>
<h3><%= Date.new(year.to_i, month.to_i, 1).strftime('%B') %> // <%= lines(&:quantity).sum %></h3>
<% for line in lines %>
<p><%= line.quantity %> <%= line.customer.name %></p>
<% end %>
<% end %>
<% end %>
我有一组包含:month,:year和:quantity属性的订单项。我可以按月和上面的代码对它们进行分组,我也试图按月计算总量。似乎无法弄明白。得到以下错误:
undefined method `lines' for #<#<Class:0x007fabb4f8afe0>:0x007fabb4f806d0>
答案 0 :(得分:2)
你似乎在调用行,就好像它是一个方法,实际上它是一个对象数组。尝试这样做:
<%= lines.map(&:quantity).sum %>
Map将通过在数组中的每条记录上调用quantity
来创建一个新数组。然后你可以总算一下。