我正在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 %>
答案 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