В моем приложении мне нужно сделать API-вызов клиенту, чтобы получить информацию о продукте (я делаю это, передав product_id
).
Их API позволяет только 1 ID
в то время, которое усложнило бы работу во много раз.
Имеется в виду несколько раз выполнить API-вызов и добавить результаты в представление.
Я провел небольшой тест со слиянием 2 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'])
Любая помощь приветствуется!