Rails中使用Pagy分页时保持记录索引连续的技术问询
解决Rails Pagy分页后连续记录索引的问题
嘿,这个问题我之前也碰到过!其实不用自己费劲算总记录数或者页数,Pagy本身就带了能直接用的属性来搞定连续索引的问题,下面是具体的修改步骤:
1. 给Partial传递Pagy对象
先修改你的index.html.erb,把控制器里的@pagy对象通过locals传给partial:
<%= render partial: "teams/card", collection: @teams, as: 'team', locals: { pagy: @pagy } %>
2. 在Partial里计算全局连续索引
在teams/_card.html.erb中,利用Pagy的offset属性(当前页第一条记录在总集合里的起始索引,从0开始),加上当前项在页面内的索引(team_counter,同样从0开始),最后加1就能得到从1开始的连续序号:
<%= pagy.offset + team_counter + 1 %>
如果你觉得上面的写法有点绕,也可以用Pagy的from属性(它直接返回当前页第一条记录的序号,已经从1开始了),直接加上team_counter就行,结果完全一致:
<%= pagy.from + team_counter %>
可选:兼容不分页的场景
如果你的页面存在不分页的情况(比如数据量很小的时候),可以加个判断避免报错:
- 先调整index里的render,给pagy加个默认值:
<%= render partial: "teams/card", collection: @teams, as: 'team', locals: { pagy: @pagy || nil } %>
- 然后在Partial里做判断:
<% if pagy %> <%= pagy.offset + team_counter + 1 %> <% else %> <%= team_counter + 1 %> <% end %>
这样改完之后,不管是第1页还是第N页,索引都会连续递增,比如第2页的第一条记录就会显示21,完全符合你的需求~
内容的提问来源于stack exchange,提问作者tommers
相关产品推荐
相关产品推荐

