Looping and selecting

i have this output from an api call

@output[‘products’][0]
=> {“url”=>“http://omgili.com/ri/.wHSUbtEfZTzBH6c9Z4cI15_sA3Hthoy48U8beRZ_m5lA7IjRC07KAl_t9PZZTUpVyIElYRPNwESkpgWrFuLtCsKQ1Apdjx_jld142pfHUAdippyPkgHob2bwpktxkzZqvVelr3L3OOq9qp5XCHXEYkx1GYb0O_awd5Z8FnemrBnhIJ4ZIOaKn7WinS9k36LajW78ScZZFngDQem4_p6BKrC02m1OhRc”, “uuid”=>“bc54af0e0b4da231cad1a1352544fd3e6c234c68”, “source”=>{“site_full”=>“www.walmart.com”, “site”=>“walmart.com”, “site_section”=>“https://www.walmart.com/”, “section_title”=>“Walmart.com: Free 2-Day Shipping on Millions of Items”, “country”=>“US”}, “name”=>“DIY Home Security for Preppers: 16 DIY Home Security Projects to Protect Your Family from Any Disaster: (Home Security Arduino, Home Security Raspberr”, “description”=>“Getting Your FREE Bonus Download this book, read it to the end and see “BONUS: Your FREE Gift” chapter after the conclusion. DIY Home Security for Preppers (FREE Bonus Included) 16 DIY Home Security Projects To Protect Your Family From Any Disaster”, “brand”=>"", “price”=>8.95, “currency”=>"$", “offer_price”=>7.46, “model”=>nil, “manufacturer”=>nil, “in_stock”=>true, “on_sale”=>true, “product_id”=>“53228544”, “sku”=>nil, “mpn”=>nil, “colors”=>[], “aggregated_rating”=>nil, “best_rating”=>nil, “worst_rating”=>nil, “rating_count”=>nil, “reviews_count”=>nil, “categories”=>[“equipment, appliances & supplies”, “books”, “house & home”, “home page”, “travel”, “house, home & gardening”, “toys-hobbies”], “width”=>nil, “height”=>nil, “weight”=>nil, “depth”=>nil, “images”=>[“https://i5.walmartimages.com/asr/8db293c3-165e-4d4c-85bd-0d07390211f1_1.4f4822a5adfdb0ade9491a1a4db775e9.jpeg”], “language”=>“english”, “last_changed”=>“2017-10-10T06:22:00.000+03:00”, “crawled”=>“2017-10-10T06:22:00.000+03:00”, “product_history”=>"/productHistory?token=b0a6c338-0c8a-4ece-82ee-b374101d9fcb&productId=http%3A%2F%2Fomgili.com%2Fri%2F.wHSUbtEfZTzBH6c9Z4cI15_sA3Hthoy48U8beRZ_m5lA7IjRC07KAl_t9PZZTUpVyIElYRPNwESkpgWrFuLtCsKQ1Apdjx_jld142pfHUAdippyPkgHob2bwpktxkzZqvVelr3L3OOq9qp5XCHXEYkx1GYb0O_awd5Z8FnemrBnhIJ4ZIOaKn7WinS9k36LajW78ScZZFngDQem4_p6BKrC02m1OhRc"}

for some reason i am unable to loop through all 100 products. i also am unable to use something like @output[‘products’][0][‘images’] to select the image using image_tag. I can use [‘products’][0][‘name’] etc just not the images or looping.

Could anyone help in what im doing wrong. I tried looping the outer elements first then the inner elements but failed. @output contains 100 results from the api call from webhoseio. (i dont want to use the webhose gem im really trying to grasp an understanding of how to use other gems like httparty or rest-client.)

the format was set to :json

How are you looping through the result. When you say you are unable to loop through, what do you mean exactly, what error are you getting

i have this output from an api call

@output['products'][0]
=>
{"url"=>"http://omgili.com/ri/.wHSUbtEfZTzBH6c9Z4cI15_sA3Hthoy48U8beRZ_m5lA7IjRC07KAl_t9PZZTUpVyIElYRPNwESkpgWrFuLtCsKQ1Apdjx_jld142pfHUAdippyPkgHob2bwpktxkzZqvVelr3L3OOq9qp5XCHXEYkx1GYb0O_awd5Z8FnemrBnhIJ4ZIOaKn7WinS9k36LajW78ScZZFngDQem4_p6BKrC02m1OhRc",
"uuid"=>"bc54af0e0b4da231cad1a1352544fd3e6c234c68",
"source"=>{"site_full"=>"www.walmart.com", "site"=>"walmart.com",
"site_section"=>"https://www.walmart.com/", "section_title"=>"Walmart.com:
Free 2-Day Shipping on Millions of Items", "country"=>"US"}, "name"=>"DIY
Home Security for Preppers: 16 DIY Home Security Projects to Protect Your
Family from Any Disaster: (Home Security Arduino, Home Security Raspberr",
"description"=>"Getting Your FREE Bonus Download this book, read it to the
end and see \"BONUS: Your FREE Gift\" chapter after the conclusion. DIY Home
Security for Preppers (FREE Bonus Included) 16 DIY Home Security Projects To
Protect Your Family From Any Disaster", "brand"=>"", "price"=>8.95,
"currency"=>"$", "offer_price"=>7.46, "model"=>nil, "manufacturer"=>nil,
"in_stock"=>true, "on_sale"=>true, "product_id"=>"53228544", "sku"=>nil,
"mpn"=>nil, "colors"=>[], "aggregated_rating"=>nil, "best_rating"=>nil,
"worst_rating"=>nil, "rating_count"=>nil, "reviews_count"=>nil,
"categories"=>["equipment, appliances & supplies", "books", "house & home",
"home page", "travel", "house, home & gardening", "toys-hobbies"],
"width"=>nil, "height"=>nil, "weight"=>nil, "depth"=>nil,
"images"=>["https://i5.walmartimages.com/asr/8db293c3-165e-4d4c-85bd-0d07390211f1_1.4f4822a5adfdb0ade9491a1a4db775e9.jpeg"],
"language"=>"english", "last_changed"=>"2017-10-10T06:22:00.000+03:00",
"crawled"=>"2017-10-10T06:22:00.000+03:00",
"product_history"=>"/productHistory?token=b0a6c338-0c8a-4ece-82ee-b374101d9fcb&productId=http%3A%2F%2Fomgili.com%2Fri%2F.wHSUbtEfZTzBH6c9Z4cI15_sA3Hthoy48U8beRZ_m5lA7IjRC07KAl_t9PZZTUpVyIElYRPNwESkpgWrFuLtCsKQ1Apdjx_jld142pfHUAdippyPkgHob2bwpktxkzZqvVelr3L3OOq9qp5XCHXEYkx1GYb0O_awd5Z8FnemrBnhIJ4ZIOaKn7WinS9k36LajW78ScZZFngDQem4_p6BKrC02m1OhRc"}

for some reason i am unable to loop through all 100 products. i also am
unable to use something like @output['products'][0]['images'] to select the
image using image_tag. I can use ['products'][0]['name'] etc just not the
images or looping.

Did you realise that images is an array?

Colin

Hi thanks for the reply id over looked that completely. what solved this was @output[‘products’][0][‘images’].first

Hi thanks for the reply. Ive been trying to loop through like so

<% @output[‘products’].each do |out| %>

<% @output['name'] %>

<% image_tag @output['images'].first %>

<% link_to 'Show', product[:id]_show_path %> <% end %>

ive been using this as a basic template.

In my pagecontentController i have index and show. for index its
def index
@keyword = “Arduino”
webhoseio = Webhoseio.new(’ # { ENV [ ’ APIKEY2 ’ ] } ’ )
@output = webhoseio.query(‘productFilter’, {‘q’: @keyword})
end

def show
@output[‘products’][:id]
end

How are you looping through the result. When you say you are unable to
loop through, what do you mean exactly, what error are you getting

Hi thanks for the reply. Ive been trying to loop through like so

<% @output['products'].each do |out| %>
<p><% @output['name'] %></p>
<P><% image_tag @output['images'].first %> </p>

That should be out['images'].first