如何将分页的请求发送到Rails中的第三方API

时间:2019-03-19 22:14:43

标签: ruby-on-rails api pagination

我正在Rails中构建Web应用程序以从第三方API获取记录。该第三方API接受page参数。例如:GET http://thirdpartyapi.com/records?page=2

我该如何以分页格式构建html,以便当用户单击数字2时,它应该发送page=2,而当用户单击数字4时,它应该在请求中发送page=4。有什么宝石吗?

class DemoController < ApplicationController
  def index
    response = HTTP.get('http://thirdparty.com/records', {query: {page: params[:page]}}) # it will return 30 items by default
    @items = response['items'].paginate(page: params[:page], per_page: 10)
  end
end

这是我的观点

<%= will_paginate %>

2 个答案:

答案 0 :(得分:0)

如果您想手动执行此操作,则不只是使用will_paginate gem

首先,您需要获得记录计数,以便知道多少页(又称页面底部有多少个链接)

@num_of_records = Object.count / per_page

然后,您需要根据要显示的链接数量通过JS处理该问题。

一旦用户单击yourlink.com/?page=2,它应该加载正确的数据,或者,如果您选择了可以从div /表中删除元素,并且如果执行AJAX,则可以通过返回来插入新元素打电话。

您的控制器看起来像这样:

def index
    page = params[:page] || 1
    per_page = 10

    @num_of_records = Object.count / per_page

    objects_to_append = Object.paginate(:page => page, :per_page => perPage)

    render json: { success: true, objects_to_append: objects_to_append }
end

答案 1 :(得分:0)

我强烈建议改用kaminari。他们有办法轻松做到这一点。 https://github.com/kaminari/kaminari#paginating-a-generic-array-object