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.