Amazon API - How to display in view

I am new to Ruby and am pretty sure that this has a very easy solution. I am querying an Amazon wishlist but am not sure how to display all of the results in the view. Following is the code with comments. Any help would be appreciated.

--- amazon_controller.rb ---

# Taken from http://www.roryhansen.ca/2005/07/18/amazon-web-services-on-rails/

require 'amazon/search'

class AmazonController < ApplicationController   include Amazon::Search

  ASSOCIATES_ID = "INSERTIDHERE"   DEV_TOKEN = "INSERTDEVTOKENHERE"

  def wishlist     # Query Amazon     request = Request.new(DEV_TOKEN, ASSOCIATES_ID, 'us', false)     @response = request.wishlist_search('170YZ2UOWUXV6', weight=HEAVY) do |product|

      @product_name = product.product_name       @list_price = product.list_price       @our_price = product.our_price       @image_url = product.image_url_medium       @url = product.url       @quantitydesired = product.quantitydesired

    end   end

end

--- wishlist.rhtml ---

<!-- DEBUGGING Trying display all results. Currently only displays the first result --> <a href="<%= @url %>"><%= @product_name %> <img src="<%= @image_url %>" class="" border="0" alt="Falling Up" /> </a></br> List Price: <%= @list_price %></br> Our Price: <%= @our_price %></br> </br></br> <!-- END DEBUGGING Trying display all results. Currently only displays the first result -->

<!-- DEBUGGING Displays all items but cannot filter for only the ones I want --> <% for item in @response %> Array Item: <%= item %><br/> <% end %> <!-- End DEBUGGING Displays all items but cannot filter for only the ones I want -->

Hi,

I am new to Ruby and am pretty sure that this has a very easy solution. I am querying an Amazon wishlist but am not sure how to display all of the results in the view. Following is the code with comments. Any help would be appreciated.

— amazon_controller.rb —

Taken from http://www.roryhansen.ca/2005/07/18/amazon-web-services-on-rails/

require ‘amazon/search’ class AmazonController < ApplicationController include Amazon::Search

ASSOCIATES_ID = “INSERTIDHERE” DEV_TOKEN = “INSERTDEVTOKENHERE”

def wishlist # Query Amazon request = Request.new(DEV_TOKEN, ASSOCIATES_ID, ‘us’, false) @products = request.wishlist_search(‘170YZ2UOWUXV6’, weight=HEAVY) end end

<%= @product_name %> <img src="<%= @image_url

%>" class=“” border=“0” alt=“Falling Up” />
List Price: <%= @list_price %>
Our Price: <%= @our_price %>


<% @products.each do |product| %> <%= product.product_name %> Falling Up
List Price: <%= product.list_price %>
Our Price: <%= product.our_price %>


<% end %>

You should investigate the link_to and image_tag helpers to help clean up your views. After you’re comfortable with that the next level would be extracting the contents of the loop into a partial.

HTH, Michael Guterl

Hi Mike,

Thanks for the reply. Still getting an error as follows: NoMethodError in Amazon#wishlist

Showing app/views/amazon/wishlist.rhtml where line #2 raised:

undefined method `url' for #<Amazon::Search::Response:0x25f3f64> Extracted source (around line #2):

1: <% @products.each do |product| %> 2: <a href="<%= product.url %>"><%= product.product_name %> <img src="<%=product.image_url_medium %>" class="" border="0" alt="Falling Up" /></a> 3: </br> 4: List Price: <%= product.list_price %></br> 5: Our Price: <%= product.our_price %></br> RAILS_ROOT: ./script/../config/..

Again here are the files: amazon_controller.rb # Taken from http://www.roryhansen.ca/2005/07/18/amazon-web-services-on-rails/

  require 'amazon/search'   class AmazonController < ApplicationController     include Amazon::Search     ASSOCIATES_ID = "IDHERE"     DEV_TOKEN = "TOKENHERE"     def wishlist       # Query Amazon       request = Request.new(DEV_TOKEN, ASSOCIATES_ID, 'us', false)       @products = request.wishlist_search('170YZ2UOWUXV6', weight=HEAVY)     end   end

wishlist.rhtml <% @products.each do |product| %>   <a href="<%= product.url %>"><%= product.product_name %> <img src="< %=product.image_url_medium %>" class="" border="0" alt="Falling Up" /

</a>

</br>   List Price: <%= product.list_price %></br>   Our Price: <%= product.our_price %></br>   </br></br> <% end %>

Kevin,

Hi Mike,

Thanks for the reply. Still getting an error as follows: NoMethodError in Amazon#wishlist

Showing app/views/amazon/wishlist.rhtml where line #2 raised:

undefined method `url’ for #Amazon::Search::Response:0x25f3f64

Extracted source (around line #2):

I am not at all familiar with the Amazon search library. However, it appears that your product object does not have a method call url.

Change this line in your controller and you should be good to go.

@products = request.wishlist_search(‘170YZ2UOWUXV6’, weight=HEAVY).products

If you need more reference information check out: http://www.caliban.org/ruby/ruby-amazon/classes/Amazon.html

Many thanks Mike. That .product in the controller did it.