Rails:如何从哈希中提取值? (亚马逊API /真空吸尘器)
如何从散列的Amazon Products API响应中提取标题,URL和图像的值(下面评论的部分)?
我正在使用Vacuum与亚马逊互动。 显然我不能使用map
作为Vacuum::Response
只接受to_h
?
目前获得 :
can't convert String into Integer
main_controller.rb :
class MainController < ApplicationController def index request = Vacuum.new('GB') request.configure( aws_access_key_id: 'ABCDEFGHIJKLMNOPQRST', aws_secret_access_key: '', associate_tag: 'lipsum-20' ) params = { 'SearchIndex' => 'Books', 'Keywords'=> 'Ruby on Rails', 'ResponseGroup' => "ItemAttributes,Images" } raw_products = request.item_search(query: params) hashed_products = raw_products.to_h # NOT WORKING puts hashed_products['ItemSearchResponse']['Items']['Item']['ItemAttributes']['Title'] puts hashed_products['ItemSearchResponse']['Items']['Item']['DetailPageURL'] puts hashed_products['ItemSearchResponse']['Items']['Item']['LargeImage']['URL'] # NOT WORKING # @products = hashed_products do |product| # product.name hashed_products['ItemSearchResponse']['Items']['Item']['ItemAttributes']['Title'] # product.url hashed_products['ItemSearchResponse']['Items']['Item']['DetailPageURL'] # product.image hashed_products['ItemSearchResponse']['Items']['Item']['LargeImage']['URL'] # end # REDUNDANT EXAMPLE FROM OTHER PROJECT # @products = raw_products.map do |product| # product = OpenStruct.new(product) # image = product.images.find { |i| i["LargeImage"] == 'URL' } # product.image = OpenStruct.new(image) # product # end end end
index.html.erb :
Products from Amazon Product Advertising API
可在此处找到Amazon响应的完整示例:
https://gist.github.com/frankie-loves-jesus/89d24dd88579c7f912f3
‘Item’是一个数组,因此您需要遍历它以收集’Title’和其他属性。 例
puts hashed_products['ItemSearchResponse']['Items']['Item'].collect{|i| i['ItemAttributes']['Title']}