【问题标题】:Loop through API response with .each使用 .each 循环访问 API 响应
【发布时间】:2019-08-29 01:15:33
【问题描述】:

我希望能够在循环中解析 A​​PI 响应。

我在控制器方法中有这个:

@payout_batch= PayPal::SDK::REST::Payout.get('xxxxxxx')
logger.info "Got Payout Batch Status[#{@payout_batch.batch_header.payout_batch_id}]"


rescue ResourceNotFound => err
  logger.error "Payout Batch not Found"
end

我可以这样显示结果:

<%= @payout_batch.batch_header.amount.value %>

但如果可能的话,我希望能够在 .each 循环中循环所有内容。我尝试了几种方法,但似乎没有任何效果:

<% @payout_batch.batch_header.each  do |x| %>
    <%= (x["amount"]) %>
<% end %>

还有更多类似的方法。尝试使用以下方式定义响应:

 json = JSON.parse(@payout_batch)

并使用 json 循环,但这似乎也不起作用。

问题:如何在视图中产生循环响应?

【问题讨论】:

  • 您可以为@payout_batch添加一个示例吗?
  • 似乎 batch_header 不可枚举
  • @TuanTran 是的,我会在一秒钟内将响应添加到更新中
  • @TuanTran 实际上,这是最好的,因为它很长:developer.paypal.com/docs/api/payments.payouts-batch/v1/…(向下滚动一点)
  • @uno 你想打印batch_header (payout_batch_id, batch_status, ...) 中的所有键、值还是只打印amount 值?

标签: ruby-on-rails json ruby paypal-rest-sdk


【解决方案1】:

PayPal 和 Stripe 支付网关的响应总是以数组的形式。 (目前,不知道其他网关,因为我在这两个上工作过。)

你可以说他们必须维护一个共同的结构来处理单个记录或多个记录,这就是为什么在每个支付网关的大多数情况下它以数组的形式返回。

所以你必须这样做。

 <%= @payout_batch.items[0].batch_header %>

【讨论】:

    猜你喜欢
    • 2015-08-05
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    相关资源
    最近更新 更多