没有宝石的导轨分页

时间:2017-03-10 00:26:57

标签: ruby-on-rails activerecord pagination

我的任务是为没有使用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。 / p>

我已经尝试过几页我可以找到的说明,包括:

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

  • ApplicationRecord<的ActiveRecord ::基
  • 行< ApplicationRecord

看来我应该编辑:

  • 行<的ActiveRecord ::基

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

供参考,erb文件链接格式:

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

1 个答案:

答案 0 :(得分:4)

你所拥有的是正确的轨道,除了你没有告诉数据库你真的想要检索接下来的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