我正在使用一个 api,我可以请求一个页面,它返回该页面的结果以及查询返回的页面总数。
我如何使用 kaminari 或 will_paginate 以便他们知道不要插入分页查询(因为它是通过 api)但仍显示页码并使用 api 返回的总页数。
我知道您可以对集合进行分页,但我不想使用它,因为原始查询(没有分页需要很长时间)
因此,我希望能够对一个对象进行分页,而不是对所有结果的数组进行分页,当分页器请求时,该对象将获取额外的页面?
我正在使用一个 api,我可以请求一个页面,它返回该页面的结果以及查询返回的页面总数。
我如何使用 kaminari 或 will_paginate 以便他们知道不要插入分页查询(因为它是通过 api)但仍显示页码并使用 api 返回的总页数。
我知道您可以对集合进行分页,但我不想使用它,因为原始查询(没有分页需要很长时间)
因此,我希望能够对一个对象进行分页,而不是对所有结果的数组进行分页,当分页器请求时,该对象将获取额外的页面?
首先,我想重申一下我认为您要确保我理解的内容——如果我没有正确,请纠正我。
您正在使用不受您控制的 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}
。