Nic*_*nto 15 pagination ruby-on-rails-3 kaminari
我想为消息传递系统创建分页,其中显示的第一个页面包含最旧的消息,后续页面显示较新的消息.
例如,如果{a,b,c,d,e,f,g,h,i}每页3页的正常分页是:
{a,b,c}, {d,e,f}, {g,h,i}
Run Code Online (Sandbox Code Playgroud)
然后反向分页将是:
{g,h,i}, {d,e,f}, {a,b,c}
Run Code Online (Sandbox Code Playgroud)
我计划在页面前面添加结果与正常分页相同,只从最后一页开始.
这有可能kaminari吗?
是的,但是我想出的方法并不完美。实际上,您必须设置自己的顺序:
Message.page(1).per(3).order("created_at DESC").reverse!
Run Code Online (Sandbox Code Playgroud)
这种方法的问题有两个:
首先是反面!调用将作用域解析为数组并执行查询,使用 AR 作用域削弱了 kaminari 的一些很棒的方面。
其次,与任何反向分页一样,您的偏移量将会移动,这意味着在两次重复调用之间,您可能会发送 3 条新消息,并且您会得到完全相同的数据。这个问题是反向分页所固有的。
另一种方法是询问“最后”页码并将页码递增到 1。
| 归档时间: |
|
| 查看次数: |
1644 次 |
| 最近记录: |