gpt4 book ai didi

ruby-on-rails - 用kaminari反向分页?

转载 作者:行者123 更新时间:2023-12-01 05:24:29 25 4
gpt4 key购买 nike

我正在使用 Kaminari 0.13.0 与 RubyOnRails 3.2.8.

让我们假设我有一个默认的元素排序 crated_at , 我有 8我列表中的元素 {a, b, c, d, e, f, g, h}然后我给它们分页 3每页。

默认情况下,kaminari 将创建以下页面链接 1, 2, 3链接到 {h, g} , {f, e, d} , {c, b, a} .

如何让 kaminari 以相反的顺序创建页面链接? 我希望它以相反的顺序生成链接 3, 2, 1仍然链接到逆序元素 {h, g} , {f, e, d} , {c, b, a} .

关于我试图解决的问题的一些背景:

我通过 created_at 对页面上的元素进行排序。我想让元素永远停留在同一页面上。如果我不使用反向分页,每次添加新元素时页面内容都会发生变化。因此,在上面的示例中,如果我将更多元素添加到列表 {i, j} 中,则默认为 kaminari 行为。然后是 1st页面将包含 {j, i, h} ,不是 {h, g}像以前一样。 2nd页面将包含 {g, f, e}不是 {f, e, d}像以前一样,等等......
这对博彩、搜索引擎优化等不利。

如果我有上面描述的反向页码,那么 1st页面仍然会有{c, b, a} , 3rd页面将使用新元素更新为 {i, h, g}并且会有一个带有一个元素的新页面 4 {j} .

最佳答案

我找到了解决方案:

def index
users_scope = Users.order(:whateva)
@users = reverse_paginate(users_scope, params[:page])
end

def reverse_paginate(scope, page)
if page
page_number = page
else
page_number = Kaminari.paginate_array(scope.reverse).page(1).per(10).num_pages
end
Kaminari.paginate_array(scope.reverse).page(page_number).per(10).reverse!
end

您需要更新 kaminari 页面 View _page.html.erb并添加 ?page=1到网址:
   url = "#{url}?page=1" if page.number == 1
link_to_unless page.current?, page.number, url, opts = {:remote => remote, :rel => page.next? ? 'next' : page.prev? ? 'prev' : nil}

关于ruby-on-rails - 用kaminari反向分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14547991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com