Amazon API - How to display in view

8 views
Skip to first unread message

Kevin D

unread,
Dec 4, 2007, 6:51:28 PM12/4/07
to Ruby on Rails: Talk
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 -->

Michael Guterl

unread,
Dec 6, 2007, 1:20:32 AM12/6/07
to rubyonra...@googlegroups.com
Hi,

On Dec 4, 2007 6:51 PM, Kevin D <kevind...@gmail.com> wrote:

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/
<snip>

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


<!-- 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 -->

<% @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 %>
 

<snip>

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

Kevin D

unread,
Dec 6, 2007, 2:36:48 AM12/6/07
to Ruby on Rails: Talk
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
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 %>
On Dec 6, 1:20 am, "Michael Guterl" <mgut...@gmail.com> wrote:
> Hi,
>

Michael Guterl

unread,
Dec 6, 2007, 10:56:37 AM12/6/07
to rubyonra...@googlegroups.com
Kevin,

On Dec 6, 2007 2:36 AM, Kevin D <kevind...@gmail.com> wrote:

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

<snip>

Kevin D

unread,
Dec 6, 2007, 5:55:29 PM12/6/07
to Ruby on Rails: Talk
Many thanks Mike. That .product in the controller did it.

On Dec 6, 10:56 am, "Michael Guterl" <mgut...@gmail.com> wrote:
> Kevin,
>
Reply all
Reply to author
Forward
0 new messages