如何对Stripe API结果进行分页?

时间:2018-11-27 07:18:06

标签: javascript ruby-on-rails ruby

问题:我想找到一种方法,可以对超过一定数量的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配置文件,文档中的内容看起来也做完了吗?

1 个答案:

答案 0 :(得分:0)

Stripe API使用游标进行分页,而不仅仅是指定页面和页面大小(will_paginate和kaminari就是这样做的)。

如果您查看listing payouts的api文档,则需要使用的参数是ending_beforestarting_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_beforestarting_after设置为params[:first_payout_id]params[:last_payout_id]