问题:我想找到一种方法,可以对超过一定数量的Stripe API结果进行分页。问题是,随着时间的流逝和更多API文档的出现,页面将加载太多数据。最好我希望每页有一个月的数据。
问题:如何在视图方面限制结果并为其创建分页。
例如,我的控制器中有这个:
@payouts = Stripe::Payout.list(
{
limit: 100,
expand: ['data.destination']
},
{ stripe_account: current_user.stripe_token }
)
观看次数:
#table html stuffs
...
<% @payouts.each do |payout| %>
<tr>
<td><%= number_to_currency(as_table_row_payout(payout["amount"] / 100.00 )) %></td>
<td><%= as_table_row_payout(Time.at(payout["arrival_date"]).strftime('%m/%d/%Y')) %></td>
</tr>
<% end %>
...
我有will_paginate宝石,但这似乎没有用。因此,我认为可以使用jquery / JS解决此问题。是否有人有解决方案来限制视图页面上请求的API JSON数据量?
有些更新,但话题有些错...(很抱歉,如果这偏离了帖子本身并开始了新的对话) 我已经找到了will_paginate可以通过API请求进行分页的宝石
我在这里找到了api分页宝石:https://github.com/davidcelis/api-pagination
虽然,当我安装了gem并按照说明进行操作时,似乎什么都没发生-我手动创建了一个api_pagination.rb配置文件,文档中的内容看起来也做完了吗?
答案 0 :(得分:0)
Stripe API使用游标进行分页,而不仅仅是指定页面和页面大小(will_paginate和kaminari就是这样做的)。
如果您查看listing payouts的api文档,则需要使用的参数是ending_before
和starting_after
。
如果您检索10个ID为[1, 2, ..., 10]
的付款,并且想要结果的下一个“页面”,则需要使用starting_after=10
再次提出请求。即从id = 10的支出中获取下10个支出。
我不知道对此有何宝石支持(尽管这绝对并不意味着没有任何宝石!),并且我倾向于通过生成“ Next”和“ Previous”链接来滚动自己的链接设置starting_after
当前页面上最后一次付款的ID或ending_before
当前页面上第一笔付款的ID。例如
<%= link_to 'Previous', list_payouts_url(first_payout_id: @payouts.first.id) %>
<%= link_to 'Next', list_payouts_url(last_payout_id: @payouts.last.id) %>
,然后将ending_before
或starting_after
设置为params[:first_payout_id]
和params[:last_payout_id]
。