Как разбить на страницы результаты Stripe API? - PullRequest
0 голосов
/ 27 ноября 2018

Проблема: Я хочу найти способ разбить на страницы результаты 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-pagination здесь: https://github.com/davidcelis/api-pagination

Хотя, когда я установил гем и следовалинструкции, похоже, ничего не произошло - я вручную создал файл конфигурации api_pagination.rb и сделал то, что, как кажется, в документации, тоже нужно делать ... Кто-нибудь использовал это раньше?

1 Ответ

0 голосов
/ 27 ноября 2018

Stripe API использует курсоры для разбивки на страницы, а не просто указывает страницу и размер страницы (что и делают will_paginate и kaminari).

Если вы посмотрите на документы API для перечисления выплат аргументы, которые вам нужно использовать: ending_before и starting_after.

Если вы получаете 10 выплат с идентификаторами [1, 2, ..., 10] и вам нужна следующая «страница» результатов, вам нужносделайте запрос снова с помощью starting_after=10.Т.е. от выплаты с id = 10 получите мне следующие 10 выплат.

Я не знаю ни о какой поддержке gem для этого (хотя это определенно не означает, что ее нет!), И ясклонен показывать свои собственные, генерируя ссылки «Далее» и «Предыдущие», чтобы установить starting_after идентификатор последней выплаты на моей текущей странице или ending_before идентификатор первой выплаты на моей текущей странице.Например,

<%= 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].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...