В моем приложении мне нужно сделать API-вызов клиенту, чтобы получить информацию о продукте (я делаю это, передавая product_id).
Их API позволяет использовать только 1 ID за раз, что во много раз усложняет работу.
Имеется в виду запустить API-вызов несколько раз и добавить результаты в представление.
Я провел небольшой тест с объединением двух JSON вместе, и все прошло нормально. Пример:
@products = data_1['data'] + data_2['data']
Конечно, это было просто и вручную. Я думал, что могу сделать для них each do и запустить код, как показано ниже:
### CONTROLLER
product_id = Array(params[:product_id].split(','))
product_id.each do |id|
uri = URI.parse("https://website.com/api?product_id=#{id}")
request = Net::HTTP::Get.new(uri)
request["Accept"] = "application/json"
req_options = { use_ssl: uri.scheme == "https", }
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
data = JSON.parse(response.body)
@products = data['data']
end
### VIEW
- @products.each do |product|
%p= product.name
%p= product.date
Это не дает мне никаких ошибок, но, на мой взгляд, я вижу подробности только для последнего product_id param. То же самое, если я уберу @products = data['data'] из each do.
В отчаянной попытке я тоже попробовал это, но безуспешно:
@products = id.as_json.merge(data['data'])
Любая помощь приветствуется!
@RicardoJacas Спасибо. Да, похоже, он отменяет их все и выбирает только последний

Ответ был намного ближе к тому, что я имел в виду. Мне нужно запустить map на самом variable, как показано ниже:
### CONTROLLER
product_id = Array(params[:product_id].split(','))
@products = product_id.map { |id|
request = Net::HTTP::Get.new(uri)
request["Accept"] = "application/json"
req_options = { use_ssl: uri.scheme == "https", }
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
data = JSON.parse(response.body)
data['data']
}
надеюсь, это кому-то поможет :)
Разве здесь не ваш код всегда имеет приоритет над продуктами? data = JSON.parse (response.body) products = data ['данные']