[英]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.