Цикл по ответу API с помощью .each

#ruby-on-rails #json #ruby #paypal-rest-sdk

#ruby-on-rails #json #ruby #paypal-rest-sdk

Вопрос:

Я хочу иметь возможность анализировать ответ API в цикле.

У меня это есть в методе контроллера:

 @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, но, похоже, это тоже не сработает.

Вопрос: Как я могу вывести ответ в представлениях с помощью цикла?

Комментарии:

1. Не могли бы вы добавить пример для @payout_batch ?

2. кажется, batch_header не поддается перечислению

3. @TuanTran да, я добавлю ответ в обновление через секунду

4. @TuanTran на самом деле, этот вариант лучший, поскольку он очень длинный: developer.paypal.com/docs/api/payments.payouts-batch/v1 /… (прокрутите немного вниз)

5. @uno Вы хотите напечатать все ключи, значения в batch_header ( payout_batch_id , batch_status , …) или просто напечатать amount значение?

Ответ №1:

Ответ платежного шлюза PayPal и Stripe всегда в виде массива. (На данный момент не знаю о других шлюзах, поскольку я работал над этими двумя.)

Вы можете сказать, что они должны поддерживать общую структуру, которая обрабатывает как одну запись, так и несколько записей, поэтому в большинстве случаев она возвращается в виде массива в каждом платежном шлюзе.

Итак, вы должны сделать вот так.

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