【问题标题】:navigating page results from an API从 API 导航页面结果
【发布时间】:2014-01-05 21:52:56
【问题描述】:

我在 Rails 应用程序中有一个视图,我通过 Twilio API 向用户展示他们最近的 50 条录音。

虽然返回的 page_size 上限为 50 个结果,但 API 会将 URI 返回到返回列表的下一页、上一页、第一页和最后一页。 (https://www.twilio.com/docs/api/rest/response#response-formats-list-paging-information)

我无法理解如何链接到该表格底部的这些结果,这样当用户单击“下一页”时,页面会刷新并且表格会填充接下来的 50 条记录。

下面是表格:

<% @recordings.list({}).each do |recording| %>

  <tr>
     <td><%= recording.sid %></td>
     <td><%= recording.duration %>sec</td>
     <td><%= recording.from %></td>
     <td><%= recording.to %></td>
 </tr>

<% end %>

<%= link_to "next page", "?" %>

当我在 Rails 控制台中查看响应时,我可以在响应中看到“next_page_uri”,我只是不确定如何“链接”到它以填充表格。

编辑** 我通过他们的 API 资源管理器发出请求以显示输出(以 JSON 格式) - 我将请求的页面结果缩短为一个,以便于阅读。

{
      "first_page_uri": "/2010-04-01/Accounts/ACb76fd7689d66a37b3defd366bc3caf12/Recordings.json?AccountSid=ACb76fd7689d66a37b3defd366bc3caf12&Page=0&CSRF=1388959981-bedd066b4f6119c70465377bb8bc012a72ea7b13be683a0819b065aa9db559c7&PageSize=1&Format=json",
      "num_pages": 178,
      "previous_page_uri": null,
      "uri": "/2010-04-01/Accounts/ACb76fd7689d66a37b3defd366bc3caf12/Recordings.json?Format=json&AccountSid=ACb76fd7689d66a37b3defd366bc3caf12&PageSize=1&CSRF=1388959981-bedd066b4f6119c70465377bb8bc012a72ea7b13be683a0819b065aa9db559c7",
      "page_size": 1,
      "start": 0,
      "recordings": [
        {
          "sid": "RE54146168533b781c0cbbaa9ada009d29",
          "account_sid": "ACb76fd7689d66a37b3defd366bc3caf12",
          "call_sid": "CAd5396192caf4c5f73a45c5026b7156a5",
          "duration": "19",
          "date_created": "Fri, 03 Jan 2014 15:32:36 +0000",
          "api_version": "2010-04-01",
          "date_updated": "Fri, 03 Jan 2014 15:32:36 +0000",
          "uri": "/2010-04-01/Accounts/ACb76fd7689d66a37b3defd366bc3caf12/Recordings/RE54146168533b781c0cbbaa9ada009d29.json"
        }
      ],
      "next_page_uri": "/2010-04-01/Accounts/ACb76fd7689d66a37b3defd366bc3caf12/Recordings.json?AccountSid=ACb76fd7689d66a37b3defd366bc3caf12&Page=1&CSRF=1388959981-bedd066b4f6119c70465377bb8bc012a72ea7b13be683a0819b065aa9db559c7&PageSize=1&Format=json",
      "end": 0,
      "total": 178,
      "last_page_uri": "/2010-04-01/Accounts/ACb76fd7689d66a37b3defd366bc3caf12/Recordings.json?AccountSid=ACb76fd7689d66a37b3defd366bc3caf12&Page=177&CSRF=1388959981-bedd066b4f6119c70465377bb8bc012a72ea7b13be683a0819b065aa9db559c7&PageSize=1&Format=json",
      "page": 0
    }

Twilio 控制器 -

@account_sid = @user.twilio_account_sid
@auth_token = @user.twilio_auth_token

# set up a client to talk to the Twilio REST API
@sub_account_client = Twilio::REST::Client.new(@account_sid, @auth_token)
@subaccount = @sub_account_client.account

@recordings = @subaccount.recordings

【问题讨论】:

    标签: ruby-on-rails ruby pagination twilio


    【解决方案1】:

    您的 URL 中可以包含 page 参数,“下一步”按钮是指向当前页面的链接,其中 page 参数递增。然后在服务器上向

    发出请求
    "/2010-04-01/Accounts/ACb76fd7689d66a37b3defd366bc3caf12/Recordings.json?AccountSid=ACb76fd7689d66a37b3defd366bc3caf12&Page=#{param[:page]}&CSRF=1388959981-bedd066b4f6119c70465377bb8bc012a72ea7b13be683a0819b065aa9db559c7&PageSize=1&Format=json"
    

    【讨论】:

    • 这发生在我身上,但我仍然不清楚recordings.list 调用如何知道在呈现表格时使用新数据?
    • 您从来没有告诉我们您是如何填充@recordings 变量的。大概您正在从对 Twilio API 请求的响应中计算它。如果是这样,那么只需使用更新的 URI 再次执行此操作。
    • 感谢阿米特的跟进。我已将 Twilio 请求添加到我的问题中。您是否建议@recordings 将在页面刷新时重新填充更新的数据?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多