【问题标题】:Rails Pagination without Gem没有 Gem 的 Rails 分页
【发布时间】:2017-07-31 04:29:11
【问题描述】:

我的任务是在不使用 gem 的情况下为 Rails 项目创建“前 10 个”、“下一个 10”、“最新”和“最旧”链接。

在控制器中,我可以在表格中显示第一组(最新的)10 个项目:

...
before_action :set_page, only: [:index]
...
def index
  @rows = Row.order(created_at:).limit(10)
end
...
private
  def set_page
    @page = params[:page] || 0
  end
...

但是,我不相信这会正确设置每个新页面 10 个,因为我无法更改页码 (hxxp://...?page=1) 以获得下一组 10 个。

我已经尝试了几页我能找到的说明,包括:

非常感谢任何方向。至于第二个示例站点,我有两个模型类:

  • ApplicationRecord
  • 行

看来我应该编辑:

  • 行 <:base>

但不知道在哪里可以找到/我应该如何添加它。感谢您耐心解答初学者的问题。

erb文件链接格式供参考:

<%= link_to 'Next 10', rows_path %>

【问题讨论】:

    标签: ruby-on-rails activerecord pagination


    【解决方案1】:

    除了您没有告诉数据库您实际上想要检索接下来的 10 条记录外,您所得到的一切都在正确的轨道上。为此,您需要传递 offset,它告诉数据库您要从中检索下 10 条记录的“起点”。

    您可以通过以下方式在代码中执行此操作:

    def index
      @rows = Row.order(created_at: :desc).limit(10).offset(@page * 10) # This assumes that the page numbering starts from 0 instead of 1 as I gather from the question
    end
    

    【讨论】:

    • 有了偏移量,如何调用页面移动到下一个或上一个?目前该命令将转到 rows_path。我已经尝试过 rows_path(page: + 1),但我收到错误消息说我不允许在其中放入整数。
    • 这确实回答了这个问题。为了实现它,我需要在 html 文件中使用 to_i 来将页面识别为整数。
    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 2023-01-19
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多