[英]Rails: pagination with custom offset using Kaminari
我正在使用 Kaminari 進行分頁,在某種情況下需要第一頁只包含 2 個條目,而彼此有 6 個條目。認為這是可以使用padding()
實現的,但它似乎不像我期望的那樣工作(文檔也沒有多大幫助):
a = (1..20).to_a
b = Kaminari.paginate_array(a).page(1).per(6).padding(2)
=> [3, 4, 5, 6, 7, 8]
關於如何實現這一點的任何想法?
這可能會幫助您:
a = (1..20).to_a
b = Kaminari.paginate_array(a).page(1).per(6).offset(2)
=> [3, 4, 5, 6, 7, 8]
用 Kaminari(0.14.1) 測試
您可以為填充使用負值,假設您通常每頁顯示 6 個項目,但對於第一頁,您只顯示 4 個。您仍然將每個值設置為 6。然后在頁面 2+ 上,您可以使用 -2 的填充考慮第 1 頁中未使用的記錄。
a = (1..20).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
b = Kaminari.paginate_array(a).page(1).per(6) # Get back 6 but only use 4
=> [1, 2, 3, 4, 5, 6]
c = Kaminari.paginate_array(a).page(2).per(6) # Get the next 6
=> [7, 8, 9, 10, 11, 12]
c.padding(-2) # Correct for the missing 2 on first page
=> [5, 6, 7, 8, 9, 10]
在您的控制器中,您將執行以下操作:
@products = Product.active.page(params[:page]).per(6)
@products = @products.padding(-2) if !params[:page].nil? and params[:page].to_i > 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.