【发布时间】:2014-09-20 03:16:58
【问题描述】:
我正在开发一个 ruby on rails 应用程序。我正在使用will_paginate gem 来实现结果分页。
但是对于每个新页面,都会发送一个新请求,并且控制器中的所有处理都会再次完成。
我想知道我是否可以通过只向后端发送一次请求并在页面中相应显示结果的方式实现分页。
【问题讨论】:
我正在开发一个 ruby on rails 应用程序。我正在使用will_paginate gem 来实现结果分页。
但是对于每个新页面,都会发送一个新请求,并且控制器中的所有处理都会再次完成。
我想知道我是否可以通过只向后端发送一次请求并在页面中相应显示结果的方式实现分页。
【问题讨论】:
这更多地与前端有关,因为页面的更改将意味着更改页面的 DOM(这需要 JavaScript)。所以,简短的回答是:
想一想:分页通常涉及到数据集太大而无法在一个页面上显示的情况。最终用户(可能还有他的硬件)可能难以理解,考虑到用户数量,网络带宽可能太大,或者在传输过程中可能会发生变化(因此在相当多的情况下无效收到后的时间)。
您想要实现的情况似乎类似于完全禁用分页,至少它在后端看起来是这样的:将所有数据放在一大块中并让客户端对其进行分页。我曾见过服务器丢弃包含大型数据集的 500(内部服务器错误)的情况,因为它无法呈现这么大的视图。
嗯...我希望我已经明确表示,只有在不会造成伤害的情况下才应该这样做,这在大多数情况下很有可能。假设您知道自己在做什么,here's an example 知道如何完成。这根本与后端无关。
作为替代方案,您可以异步加载数据块,再次主要是客户端,不同之处在于服务器端分页保持不变。
但您似乎在浏览数据集时避免完全执行某些控制器操作。也就是说,您可以在完成其工作的数据集被访问时调用某个操作,然后重定向到包含指向其他链接的直接(非重定向)链接的分页操作页面。
【讨论】:
您根本不需要 will_paginate 和 Rails。
您需要在第一次请求时加载所有记录并实现 JavaScript 分页
当然,你可以使用很多库
【讨论】: