簡體   English   中英

Rails - 顯示所有項目的分頁寶石

[英]Rails - Pagination gem showing all items

我正在使用分頁寶石來分頁客戶訂單。 我必須通過數據庫使用關系顯示訂單:

<table class="order-items">
<th>Date</th>
<th>Order No.</th>
<th>View Order</th>
<% @customer.orders.each do |order| %>
    <tr>
        <td><%= order.created_at.strftime("%d %b. %Y") %></td>
        <td><%= order.id %></td>
        <td><%= link_to 'Show',  "../orders/#{order.id}" %></td>
    </tr>
<% end %>   
</table>

<p><%= will_paginate @orders %></p>

我的控制器中的代碼:

  @customer = Customer.find(params[:id])
  @order = @customer.orders
  @orders = @order.paginate page: params[:page], order: 'title',
  per_page: 5

我為這個客戶創建了6個訂單來測試它。 我遇到的問題是分頁頁面在底部正確顯示(2頁),但所有6個訂單仍然顯示在列表中,並且兩個分頁頁面仍顯示所有6個訂單。

我已經設法讓所有其他頁面的分頁工作正常,所以我假設它是因為我在那里有order.line_items.each構造 - 所以這就是為什么它顯示所有6.我不知道雖然如何解決這個問題! 任何幫助將不勝感激,謝謝!

您應該在每個語句之前在視圖中添加以下行

    <%= will_paginate @orders %>

嘗試這個

在控制器中:

 @customer = Customer.find(params[:id])
 @order_items = @customer.orders.paginate(:page => params[:page], :per_page => 5)

在視圖中:

<table class="order-items">
<th>Date</th>
<th>Order No.</th>
<th>View Order</th>

<%= will_paginate @order_items %>

<% @order_items.each do |order| %>
<tr>
    <td><%= order.created_at.strftime("%d %b. %Y") %></td>
    <td><%= order.id %></td>
    <td><%= link_to 'Show',  "../orders/#{order.id}" %></td>
</tr>
<% end %>   
</table>

我建議你使用看起來更干凈的做事和實施方法的Kaminari

在你的控制器中

@orders = Kaminari.paginate_array(Customer.find(params[:id]).orders).page(params[:page])

在您的模型中指定所需的每頁

paginates_per 10

在你看來

<% @orders.each do |order| %>
<tr>
    <td><%= order.created_at.strftime("%d %b. %Y") %></td>
    <td><%= order.id %></td>
    <td><%= link_to 'Show',  "../orders/#{order.id}" %></td>
</tr>
<% end %>

<%= paginate @orders %>

我希望它有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM