Как поместить встроенный Ruby каждый цикл во внешний запрос? - PullRequest
0 голосов
/ 14 января 2012

Я использую Rails 3.1 и гем paypal_adaptive (https://github.com/tc/paypal_adaptive), чтобы сделать запрос API к Paypal. Вот сделка: у меня есть запрос, который я делаю в Paypal в контроллере. У меня есть коллекция Предметов (которая здесь @items), и я пытаюсь добавить получателей к этому запросу для каждого предмета в этой коллекции. Вот мой код:

pay_request = PaypalAdaptive::Request.new

data = {
  "returnUrl" => "http://testserver.com/payments/completed_payment_request",
  "requestEnvelope" => {"errorLanguage" => "en_US"},
  "currencyCode" => "USD",
  "receiverList" => {"receiver"=>[
    @items.each do |item|
      {"email"=>"#{Recipient.find_by_id(item.recip_id).email}", "amount"=>"#{item.price}"},
    end
  ]},
  "cancelUrl"=>"http://testserver.com/payments/canceled_payment_request",
  "actionType"=>"PAY",
  "ipnNotificationUrl"=>"http://testserver.com/payments/ipn_notification"
}

pay_response = pay_request.pay(data)

if pay_response.success?
  redirect_to pay_response.approve_paypal_payment_url
else
  puts pay_response.errors.first['message']
  redirect_to failed_payment_url
end

... но это не работает. Как правильно вставить синтаксис Ruby в этот запрос?

(Извините за неопределенность в названии. Я не уверен, какой запрос я делаю (AJAX может быть?))

1 Ответ

0 голосов
/ 14 января 2012

Просто соберите все элементы в переменную и установите это в качестве значения ключа «reciever»:

recipients = @items.each do |item|
  {"email"=>"#{Recipient.find_by_id(item.recip_id).email}", "amount"=>"#{item.price}"}
end

...

"currencyCode"=>"USD",  
"receiverList"=>{"receiver"=> recipients},
"cancelUrl"=>"http://testserver.com/payments/canceled_payment_request",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...