Rails同一页面多表格使用Pagy分页的冲突问题解决
在同一页面中使用Pagy实现多表独立分页
要解决两个表格共用page参数导致的分页冲突问题,只需为每个Pagy实例指定专属的分页参数名,具体步骤如下:
1. 控制器中指定专属page参数
初始化Pagy对象时,通过page_param选项分别设置不同的参数名,替代默认的page:
# 发票表格的Pagy初始化 @pagy_inv, @invoices = pagy( @invoices.reorder(sort_column_show_city_invoices => sort_direction_show_city_invoices), items: params.fetch(:count, 10), page_param: :page_inv # 自定义发票分页参数 ) # 订单表格的Pagy初始化 @pagy_ord, @orders = pagy( @orders.reorder(sort_column_show_city_orders => sort_direction_show_city_orders), items: params.fetch(:count, 10), page_param: :page_ord # 自定义订单分页参数 )
2. 视图中生成独立的分页链接
渲染分页导航时,通过params选项保留当前的搜索、排序参数,同时确保分页链接使用对应的专属参数:
# 发票表格的分页导航 <%== pagy_nav(@pagy_inv, params: params.merge(page_inv: @pagy_inv.page)) %> # 订单表格的分页导航 <%== pagy_nav(@pagy_ord, params: params.merge(page_ord: @pagy_ord.page)) %>
这样修改后,两个表格的分页参数完全独立:发票分页使用page_inv,订单分页使用page_ord,切换某一个表格的页码时,只会修改对应参数,不会影响另一个表格的分页状态,彻底解决页码超出范围报错的问题。
内容的提问来源于stack exchange,提问作者Mi Ro
相关产品推荐
相关产品推荐

