will_paginate在第一页后删除“sum”

时间:2011-09-28 17:22:26

标签: ruby-on-rails will-paginate

我正在使用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也能正常工作?

1 个答案:

答案 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来获取计数和求和指标,它应该有用。