4

我正在使用 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]

关于如何做到这一点的任何想法?

4

2 回答 2

4

这可能会帮助您:

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) 测试

于 2013-08-14T18:56:55.793 回答
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
于 2015-01-21T22:11:39.230 回答