我正在使用 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]
关于如何做到这一点的任何想法?
我正在使用 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