Looping and selecting

24 views
Skip to first unread message

kaine wright

unread,
Apr 10, 2018, 1:14:24 PM4/10/18
to Ruby on Rails: Talk
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

dasibre

unread,
Apr 11, 2018, 7:10:53 AM4/11/18
to Ruby on Rails: Talk
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

Colin Law

unread,
Apr 11, 2018, 7:18:21 AM4/11/18
to Ruby on Rails: Talk
Did you realise that images is an array?

Colin

>
> 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
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rubyonrails-ta...@googlegroups.com.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rubyonrails-talk/bb7f95f9-95ce-4440-832d-4b33f2060ea2%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

kaine wright

unread,
Apr 12, 2018, 9:22:15 AM4/12/18
to Ruby on Rails: Talk
Hi thanks for the reply id over looked that completely. what solved this was @output['products'][0]['images'].first

kaine wright

unread,
Apr 12, 2018, 9:27:36 AM4/12/18
to Ruby on Rails: Talk


On Wednesday, April 11, 2018 at 7:10:53 PM UTC+8, dasibre wrote:
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>
<% link_to 'Show', product[:id]_show_path %> 
<% end %>

ive been using this as a basic template.

kaine wright

unread,
Apr 12, 2018, 9:32:13 AM4/12/18
to Ruby on Rails: Talk
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

Colin Law

unread,
Apr 12, 2018, 10:40:53 AM4/12/18
to Ruby on Rails: Talk
On 12 April 2018 at 14:27, kaine wright <kaine.w...@gmail.com> wrote:
>
>
> On Wednesday, April 11, 2018 at 7:10:53 PM UTC+8, dasibre wrote:
>>
>> 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

> <% link_to 'Show', product[:id]_show_path %>
> <% end %>
>
> ive been using this as a basic template.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rubyonrails-ta...@googlegroups.com.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rubyonrails-talk/60062487-0b2c-4c40-9e5c-fbde50017df0%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages