我的任务是在不使用 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 页。
我已经尝试了我能找到的几页说明,包括:
不使用 gem 进行分页 Next、Previous、Name.order(:id).limit(10).offset(0) 按钮 https://stackoverflow.com/questions/36070685/paginate-without-a-gem-next-previous-buttons-for-name-orderid-limit10-off
https://solidfoundationwebdev.com/blog/posts/next-and-previous-links-in-rails https://solidfoundationwebdev.com/blog/posts/next-and-previous-links-in-rails
任何方向都非常感激。至于第二个示例站点,我有两个模型类:
看来我应该编辑:
但不知道在哪里可以找到/我应该如何添加它。感谢您对初学者问题的耐心解答。
作为参考,erb 文件链接格式:
<%= link_to 'Next 10', rows_path %>
您所得到的一切都在正确的轨道上,除非您没有告诉数据库您实际上想要检索接下来的 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)