【发布时间】:2012-07-26 17:24:52
【问题描述】:
我正在尝试将 will_paginate 用于 Rails 3.2 应用程序,但我在任何地方都没有看到任何参考,说明当数据库中的数据发生更改时有人进行分页时会发生什么。更具体地说,添加了新记录。
我可能在这里遗漏了一些东西,但如果我知道它是如何工作的,will_paginate 只会计算数据库中的记录。 假设我一次加载一个包含 5 条记录的页面,并希望它们按最新的排序。 用户加载页面并获取显示在第 1 页的记录 6-10(当时的最新记录)。然后,有人将另一条记录插入到表中,id=11。之后,第一个用户点击进入第 2 页,但现在第 2 页提供记录 2-6。所以用户在两个页面中都得到了 id=6。
这个问题听起来没那么糟糕,但是如果你想使用 will_paginate 分页来无限滚动,那就太糟糕了:http://railscasts.com/episodes/114-endless-page
我考虑添加第一个页面加载的时间戳并将其传递给连续的 ajax 调用以过滤最初存在的记录,以免重复。
是否有一些最佳实践方法来处理这个问题?
【问题讨论】:
-
我使用时间戳来仅获取第一页加载时存在的数据。
-
在这种情况下,您可能需要考虑添加检查是否有任何比时间戳更新的记录,如果有,则显示一个链接以允许用户加载更新的结果 (例如,看看 twitter 是如何做到这一点的)。
标签: ruby-on-rails ajax will-paginate infinite-scroll