用will_paginate或kaminari从api中分页

时间:2013-09-07 10:30:48

标签: ruby-on-rails will-paginate kaminari

我正在使用api,我可以请求页面,它会返回该页面的结果以及查询返回的页面总数。

我如何使用kaminari或will_paginate以便他们知道不插入分页查询(因为它是通过api)但仍显示页码并使用api返回的总页数。

我知道你可以对一个集合进行分页,但是我不想使用它,因为原始查询(没有分页需要很长时间)

因此,我希望能够对一个对象进行分页,而不是对所有结果的数组进行分页,而该对象将在分页器请求时获取其他页面吗?

1 个答案:

答案 0 :(得分:1)

首先,我想重申一下我认为你要确保我理解的内容 - 如果我没有正确的话,请纠正我。

使用不受您控制的API,并向您发送特定结果页面的请求。例如,您向http://some-service.com?page=3发送请求,并发回10个结果,并且可用的总页数为42。

然后,对于您的应用程序的用户,您希望显示结果,并且他们可以请求上一页和下一页,并告诉他们可用的总页数。当您的应用用户点击next链接时,您想要请求http://some-service.com?page=4等。

我认为您不需要kaminari或will-paginate - 听起来您只需将用户发送到应用程序的参数传递给API,然后传递API返回的信息通过您的用户。

例如,您的用户会访问http://your-application.com/results这样的网页。在您的控制器中,您将获得params[:page],当URL中不存在时,您需要将其默认为1。

然后,您可以向http://some-service.com/page=1发出请求,并在total_pages_available等变量中保存总页数。

在您看来,您可以查看params [:page]是否大于1,在这种情况下,您应该显示链接到http://your-application.com/results?page=#{params[:page] - 1}的“上一个”链接。您还可以检查params [:page]是否小于total_pages_available,在这种情况下,您应该显示链接到http://your-application.com/results?page=#{params[:page] + 1}的“下一个”链接。