我正在使用will_paginate,它就像一个魅力,将我的结果分解成许多页面。但是在第一个页面的任何页面上,我的'sum'方法返回0.
我的观点中有两个表格。第一个是整个集合的摘要信息,第二个是分页集合。我的收藏的第1页显示一切都很完美。 Page> = 2将'sum'变为0但.count仍然有效。
我的控制器:
def donations_by_season
@season_name = params[:season_name]
@donations = Donation.by_season(@season_name).paginate :page=>params[:page], :order=>'created_at desc', :per_page => 25
@valid_seasons = Donation.select(:season).group(:season)
end
My Partial在顶部表中包含以下值:
<td> <%= number_to_currency @donations.sum(:amount) %></td>
<td><%= @donations.count %></td>
这些在较低的地方:
<% @donations.each do |donation| %>
<tr class="<%= cycle("odd", "even", :name => "row_class") %> ">
<td><%= number_to_currency(donation.amount) %></td>
<td><%= donation.iho_full %></td>
<td><%= donation.box_code %></td>
<td><%= donation.list_name %></td>
</tr>
<% end %>
</table>
<p><%= will_paginate @donations %></p>
在第一页上,number_to_currency @donations.sum(:amount)
和@donations.count
准确无误。在第一页之后,.sum变为0但.count保持不变。我如何让.sum也能正常工作?
答案 0 :(得分:2)
我相信will_paginate会覆盖关系方法“count”。
如果你看一下paginate方法返回的关系,它就不包含它所说的计数元素。
总和相同。它必须覆盖它,因为它不能反映真正的集合返回的内容。
如果您重构代码,请使用:
@all_donations = Donation.by_season(@season_name)
@donations = @all_donations.paginate :page=>params[:page], :order=>'created_at desc', :per_page => 25
使用@all_donations来获取计数和求和指标,它应该有用。