2

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

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

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

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

4

1 回答 1

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}

于 2013-09-07T15:00:52.123 回答