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']}