用 kaminari 反向分页?

2023-12-23

我在用Kaminari https://github.com/amatsuda/kaminari0.13.0 与红宝石 on Rails http://rubyonrails.org/ 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对页面上的元素进行排序。我想让元素永远保留在同一页面上。如果我不使用反向分页,每次添加新元素时页面内容都会发生变化。因此,在上面的示例中,如果我向列表中添加更多元素,则使用默认的 kaminari 行为{i, j}那么1st页面将包含{j, i, h}, not {h, g}就像以前一样。这2nd页面将包含{g, f, e} not {f, e, d}像以前一样,等等... 这对博彩、SEO 等不利。

如果我有上述反向页码,那么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 页面视图_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}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用 kaminari 反向分页? 的相关文章

  • Rails 4 和 Turbolinks - 元标签未更改

    我有一个启用了 Turbo Links 的 Rails 4 应用程序 但在更改页面时无法刷新元标记 不是完全刷新 我读到元标记需要包含在加载涡轮链接的 JavaScript 之前 但它没有效果 完全刷新可以完成这项工作 但不幸的是这不是我所
  • puma systemd 脚本无法启动 puma

    我已经从多个来源复制并粘贴了以下美洲狮系统启动脚本的片段 但它不起作用 系统是Debian 9 6 用户rails红宝石通过安装rvm 用户rails可以启动命令RAILS ENV production bundle exec puma C
  • 有没有办法使用 Rspec/Capybara/Selenium 将 javascript console.errors 打印到终端?

    当我运行 rspec 时 是否可以让 capybara selenium 向 rspec 报告任何 javascript console errors 和其他异常 我有一大堆测试失败 但当我手动测试它时 我的应用程序正在运行 如果不知道仅在
  • 再次返回使用 Rails 3 中的 Rails 2.3.5

    最近 我看到有关Rails 3 0 beta的信息 我想尝试一下 所以我使用gem update并安装了这个版本 但现在 我需要回到 Rails 2 3 5 我怎样才能做到呢 我正在考虑这两个解决方案 卸载 Rails 3 我读到有人使用
  • ruby 2.0.0p247 的分段错误导致 Rails 服务器崩溃

    在 OS X Mavericks 1 9 上运行 Rails 4 0 Ruby 2 0 0p247 我今天遇到了一个我从未遇到过的错误 我不明白 当尝试在我的项目中启动 Rails 服务器时 服务器崩溃了 我确实尝试重新安装并重新编译一次
  • 轨道上的下一个对象问题

    视频影像 表 id title votes count 视频影像 控制器 def show video Video find params id next video Video order votes count DESC where v
  • 在表单中编辑序列化哈希?

    我正在序列化存储在settings表中的字段 并且希望能够在表单字段中编辑该哈希 class Template lt ActiveRecord Base serialize settings end 但我就是这么做那么文本区域只显示序列化数
  • ror 中的多种布局

    昨天刚开始使用 Ruby on Rails 在我的 layouts application html erb 中 我有 div class conta div
  • Rails Active Storage - 保留现有文件/上传吗?

    我有一个 Rails 模型 has many attached files 默认情况下 通过 Active Storage 上传时 如果您上传新文件 它会删除所有现有上传内容并将其替换为新文件 我有一个控制器破解 由于多种原因 它不太理想
  • RailsAdmin 中具有 join_table 和 has_many :through 的模型的路由错误

    所以我有3个模型 category product category products 这是我的category rb attr accessible name has many category products do def with
  • URL 路由中的点与命名空间 Rails 3.1

    我有这个路线 rb root to gt posts index devise for users controllers gt omniauth callbacks gt users omniauth callbacks resource
  • 为什么 Rails 应用程序在底部显示数据库信息?

    我创建了一个博客 每当我添加帖子时 帖子索引页面底部总会显示数据库中的记录列表 home html erb 像这样
  • Devise:允许用户注册为“UsErNaMe”但使用“用户名”登录

    与大多数网站的工作方式相同 我将 UsErNaMe 存储在数据库中 但让用户使用 用户名 登录 这是一个相当明显且必要的功能 很多人似乎都问过它 但我不断遇到的解决方案似乎与 Devise 自己的文档脱节 例如 考虑这篇博文 http an
  • 如何使用国家宝石

    我正在尝试使用国家宝石 https github com hexorx countries 但是在我捆绑安装这个 gem 后 有一些关于如何合并它的基本问题 我是否需要创建新的控制器 模型才能访问这些国家 地区 如何创建一个简单的选择下拉列
  • 在 Yosemite 上安装 Ruby 1.9.2 时出错

    我在 Yosemite 上使用 rvm 安装 ruby 1 9 2 时遇到错误 有人可以帮助我吗 我更新了自制程序和rvm 我正在与其他人合作处理这个项目 所以我无法升级 ruby 我在下面放置了我的输出的链接 提前致谢 Kanyons M
  • 我应该如何使用 alias_method_chain 作为构建方法?

    我正在使用 Ruby on Rails 3 2 13 我想正确使用alias method chain build option name声明 因为我收到一个奇怪的错误 那是 在我的控制器文件中我有 class Articles Comme
  • 更改 Active Storage 的默认 URL

    我们可以更改从活动存储创建的默认 永久 url 以重定向到 S3 类似于rails active storage representations 我不喜欢网址中的框架名称 Thanks UPDATE 最近 Rails 6 中增加了一个可配置
  • 如何将 devise/omniauth 重定向到我登录的页面?

    我通过omniauth 进行了身份验证 并且该链接通过layout application html haml 在每个页面上都可用 然而 当他们完成omniauth身份验证后 他们都会进入root权限 我如何设置它 以便他们重定向到他们单击
  • 如何检查字符串是否为有效日期

    我有一个字符串 31 02 2010 并想检查它是否是有效日期 最好的方法是什么 我需要一个方法 如果字符串是有效日期 则返回 true 如果不是 则返回 false require date begin Date parse 31 02
  • “heroku”命令存在于以下 Ruby 版本中:

    我在使用 heroku 工具带时遇到了重大问题 我正在使用 cedar 14 堆栈 当我尝试使用不是的 ruby 版本时ruby 2 0 0 dev我收到这个错误 rbenv heroku command not found The her

随机推荐

  • 更改窗口位置,然后等待窗口加载?

    请耐心等待 我对 Javascript 完全是个菜鸟 P 所以 我想做的是使用一个函数来加载网页 并且 在该功能完成后 我希望能够获取页面上某个元素的 HTML 代码 到目前为止 这是我的代码 function change window
  • OS X Sublime Text3 使用 zsh shell

    我想构建一个 python 文件 但出现以下错误 bin bash python command not found 原因是我使用的是 zsh 而不是 bash 那么如何让Sublime来查看 bin zsh 这表明您的路径不正确 也不是您
  • 如何使用NIO将InputStream写入文件?

    我正在使用以下方式来编写InputStream to File private void writeToFile InputStream stream throws IOException String filePath C Test jp
  • 使用颜色条在绘图中设置相同的纵横比

    我需要生成一个在两个轴上具有相同纵横比且在右侧具有颜色条的图 我尝试过设置aspect auto aspect 1 and aspect equal 没有好的结果 请参阅下面的示例和 MWE Using aspect auto 颜色条的高度
  • dojox 图表:删除图表周围的填充

    如何移动 dojox 图表周围的填充 这是一个例子 var chart1 new dojox charting Chart2D simplechart fill FFC0C0 chart1 addPlot default type Colu
  • 调用 NSTextField setStringValue: 后如何更新扩展工具提示大小?

    当视图包含NSTextField启用扩展工具提示且文本不适合 然后用户将光标悬停在该字段上 OS X 会显示扩展工具提示 如果你随后打电话setStringValue 更改文本内容NSTextField 扩展工具提示的大小不会更新 例如 如
  • 如何断言在 Symfony 中使用 Monolog 记录一行

    我在 Symfony2 中使用 Monolog 使用默认的 MonologBu ndle 我试图在我的测试中断言已记录一行 我已经在我的config test yml monolog handlers main type test leve
  • Groovy 中两个日期之间的持续时间

    Groovy 有没有办法获取两个 Date 对象之间的持续时间 我正在寻找的持续时间格式类似于 2 天 10 小时 30 分钟 Thanks 时间类别 http docs groovy lang org latest html api gr
  • Union-Find 或 DFS:哪个更适合查找连通分量?

    Union Find 和 DFS 都可以用来查找连接性 哪种情况下哪个更好 并查找算法最适合等价关系发生变化的情况 即需要对分区集执行 并集 操作 给定一个固定的无向图 等价关系根本不会改变 边都是固定的 OTOH 如果您有一个添加了新边的
  • 如何使用 mysqldump 仅导出 CREATE TABLE 命令?

    我正在尝试使用mysqldump仅导出数据库模式 没有数据 没有额外的 SQL 注释 只是CREATE TABLE命令 这是我到目前为止所得到的 mysqldump h localhost u root p no data compact
  • 在 Angular 6 中生成没有 *.spec.ts 的组件

    在以前的版本中 可以使用 angular cli json 禁用 spec ts 如下所示 有没有办法用 6 0 0 版本中的 angular json 来做到这一点 defaults component spec false servic
  • 在 wsdl 中哪里放置版本信息?

    我有一个 Web 服务 其中定义位于 wsdl 文件中 架构位于外部 xsd 文件中 在 xsd 文件中 有 schema 标记 它提供了一个属性 version 我可以用它来记录当前版本 wsdl 格式 WSDL 1 1 有类似的东西吗
  • 为什么我的 Ajax 调用的“等待”时间这么长? (Chrome 网络面板)

    我在页面上有一些 ajax 调用 请求一些 json 内容 在所有这些电话中 我等待响应完成的时间很长 对于每个呼叫 呼叫中都会有几秒钟的 等待 期 如下面的 Chrome 网络面板所示 我附上了一张图片 我不太确定是什么原因造成的 因为我
  • 如何在 Github Desktop 中重做“撤消最近提交”

    我想解锁我的最后一次提交 并在存储库菜单中单击了 撤消最近的提交 发生的事情是提交消失了 并且该提交中的所有文件都消失了 我在文件字段中留下了 0 更改 并且我回来了两个月的更改 我怎样才能取回该提交中的文件 这是我最终恢复文件的方法 由此
  • Java/JavaFX:为 JavaFX 标签设置 Swing 图标

    我正在尝试从文件 ico exe 中读取缩略图 图标 32x32px 并将其设置为 JavaFX 标签 我的第一次尝试 public Icon getLargeIcon String exeFile if exeFile null File
  • 当其他应用程序使用同一数据库时JPA的并发性

    我正在开发 Spring MVC JPA Web 应用程序 当此应用程序部署在实时环境中时 与我的应用程序交互的同一数据库将同时被其他 2 个 Dotnet 和 VB 应用程序使用 我通过版本列管理 JPA 应用程序的并发性 对于同一个数据
  • Django - 为什么我应该使用 render_to_response ?

    考虑一下 return render request index html context return render to response index html context 一方面 render更干净 更Pythonic 另一方面
  • 似乎无法起订量 EF CodeFirst 4.1。有帮助吗?

    我的任务是评估 codeFirst 并可能用于我们未来的所有项目 评估基于将 codeFirst 与现有数据库结合使用 想知道是否可以使用 codeFirst 4 1 来模拟存储库 没有假货 这个想法是将存储库注入到服务中并最小起订量存储库
  • 在nginx中设置“X-Forwarded-For”标头的目的是什么

    我的 Django 应用程序有以下 Nginx 配置 upstream api server localhost 8000 server listen 80 location proxy pass http api proxy redire
  • 用 kaminari 反向分页?

    我在用Kaminari https github com amatsuda kaminari0 13 0 与红宝石 on Rails http rubyonrails org 3 2 8 假设我的元素有默认排序crated at 我有8我的