will_paginate отбрасывает "сумму" после первой страницы - PullRequest
0 голосов
/ 28 сентября 2011

Я использую will_paginate, который работает как брелок для разбиения моих результатов на множество страниц.Но на любой странице, кроме первой, мой метод sum возвращает 0.

В моем представлении есть две таблицы.Первый - это сводная информация по всей коллекции, а второй - нумерация страниц.Страница 1 моей коллекции показывает все идеально.Страница> = 2 переводит «сумму» в 0, но. Количество все еще работает.

Мой контроллер:

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 Ответ

2 голосов
/ 29 сентября 2011

Я полагаю, что 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, чтобы получитьрассчитывать и суммировать метрики, это должно работать.

...