Будет ли драгоценный камень Pagiante ограничивать количество результатов в цикле на номер страницы, как этого избежать? - PullRequest
0 голосов
/ 20 декабря 2018

Я делаю это в моем контроллере:

@orders_e = Order.all.where(seller: current_user).where(order_status: [2] ).paginate(:page => params[:month_orders_page_1], :per_page => 12)
@orders_month = @orders_e.all.group_by { |mon|  mon.created_at.beginning_of_month }

, а затем на мой взгляд:

<% @orders_month.each do |month, orders| %>
     <td><%= month.strftime("%b.") %></td>
     <td class="center"><%= orders.count %></td>
<% end %>

и результаты ограничиваются 12. Например, если есть 20@orders_e в этом месяце он будет считаться только до 12 баллов.

Когда я снимаю код пагинации с конца кода контроллера, он этого не делает, но внешний интерфейс будет неограниченнымрезультаты.

Я могу ограничить цикл 12, но я хочу получить 12 результатов на страницу.

Каким образом я могу сделать так, чтобы у меня было 12 результатов на страницу с функцией разбивки на страницы, с гемом will_paginate или без него?

(я сделал тег javascript на случай, если есть способ сделать это через javascript.)

1 Ответ

0 голосов
/ 20 декабря 2018

Вам нужно использовать 2 отдельных запроса, чтобы показать общее количество.

# controller code
scope = Order.where(seller: current_user, order_status: [2] )

@orders_e = scope.paginate(page: params[:month_orders_page_1], per_page: 12)
@order_counts = scope.group("DATE_PART('month', created_at)").count

# view code
<% @order_counts.each do |month, count| %>
  <td><%= Date::MONTHNAMES[month.to_i] %></td>
 <td class="center"><%= count %></td>
<% end %>
...