gpt4 book ai didi

ruby-on-rails-3 - 使用 kaminari 查找给定记录的页面

转载 作者:行者123 更新时间:2023-12-02 02:09:58 26 4
gpt4 key购买 nike

Ruby on Rails 3 项目。更新记录后,我们返回所有记录的索引(不是更新记录的 View )。该索引使用 Kaminari 进行分页。我们如何返回包含更新记录的索引页面?

最佳答案

Java JPA/Hibernate 也有类似的问答 Finding out the page containing a given record using JPA (Hibernate)这显示了在索引 View 中获取记录偏移量所需的 sql。有点像

SELECT COUNT(*)
FROM Model r
WHERE r.column < ?
ORDER BY r.id

页码将为 offset/records_per_page + 1。

接下来的问题是如何从 Kaminari 获取 records_per_page? Kaminari 允许您在配置中设置每页的记录数,并通过 Model.paginates_per 为特定模型设置记录数。它提供了 Model.default_per_page 方法来为模型生成每页的记录数。

决定页面的最佳位置是在显示索引的 Controller 方法中。该方法已经获取页面参数(如果存在)以显示正确的页面。另一种方法是在重定向和发送页面参数之前计算页面。让我们试试前者。

保存编辑后,我们使用一个参数重定向到索引,该参数标识我们希望包含在索引页面中的记录redirect with params .索引按 Model.column 排序。

redirect_to model_index_url(:for_column => @model_record.column), 
:notice => 'Record saved'

然后在 Controller 的索引方法中,我们让页面参数控制,或者从 for_column 参数(如果存在)计算页面。

page = 1 
if (params[:page])
page = params[:page]
elsif (params[:for_column])
offset = Model.select('count(*) as count').where('? < column',
params[:for_column]).order(id).first
page = offset.count/Model.default_per_page + 1
end
@records = Model.all.order('column desc').page(page)

当然,Model 和 Model.column 代表您的应用程序的模型和列名称。

关于ruby-on-rails-3 - 使用 kaminari 查找给定记录的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13365089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com