#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 %>