我正在使用api,我可以请求页面,它会返回该页面的结果以及查询返回的页面总数。
我如何使用kaminari或will_paginate以便他们知道不插入分页查询(因为它是通过api)但仍显示页码并使用api返回的总页数。
我知道你可以对一个集合进行分页,但是我不想使用它,因为原始查询(没有分页需要很长时间)
因此,我希望能够对一个对象进行分页,而不是对所有结果的数组进行分页,而该对象将在分页器请求时获取其他页面吗?
答案 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}
的“下一个”链接。