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 —
<%= @product_name %>
List Price: <%= @list_price %>
Our Price: <%= @our_price %>
<% for item in @response %>
Array Item: <%= item %>
<% end %>
Hi,
On Dec 4, 2007 6:51 PM, Kevin D [email protected] wrote:
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 %>
List Price: <%= @list_price %>
Our Price: <%= @our_price %>
<% @products.each do |product| %>
<%= product.product_name %>
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 G.
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: <%= product.product_name %>
3:
4: List Price: <%= product.list_price %>
5: Our Price: <%= product.our_price %>
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| %>
<%= product.product_name %> <img src=“<
%=product.image_url_medium %>” class=“” border=“0” alt=“Falling Up” /
List Price: <%= product.list_price %>
Our Price: <%= product.our_price %>
<% end %>
Kevin,
On Dec 6, 2007 2:36 AM, Kevin D [email protected] 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
Many thanks Mike. That .product in the controller did it.