没有宝石的Rails分页

jav*_*2.0 5 activerecord pagination ruby-on-rails

我的任务是在不使用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
...
Run Code Online (Sandbox Code Playgroud)

但是,我认为这不能正确地将新页面设置为10个新页面,因为我无法更改页码(hxxp:// ...?page = 1)以获取下一组10。

我尝试了几页的说明,包括:

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

  • ApplicationRecord <ActiveRecord :: Base
  • 行<ApplicationRecord

看来我应该在编辑:

  • 行<ActiveRecord :: Base

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

作为参考,erb文件链接格式:

<%= link_to 'Next 10', rows_path %>
Run Code Online (Sandbox Code Playgroud)

Nav*_*ris 6

除了没有告诉数据库您实际上要检索接下来的10组记录之外,您所拥有的一切都在正确的轨道上。为此,您需要传递offset,它将告诉DB您要从中检索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
Run Code Online (Sandbox Code Playgroud)