Rails:如何从哈希迭代产品? (亚马逊API /真空吸尘器)

扩展Rails:如何从哈希中提取值? (亚马逊API /真空吸尘器) – 如何将这些新挖出的值用于我的视图?

目前获得

undefined method `image_url' for # Extracted source (around line #5):  

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 # puts hashed_products['ItemSearchResponse']['Items']['Item'].collect{ |i| i['ItemAttributes']['Title'] } # puts hashed_products['ItemSearchResponse']['Items']['Item'].collect{ |i| i['DetailPageURL'] } # puts hashed_products['ItemSearchResponse']['Items']['Item'].collect{ |i| i['LargeImage']['URL'] } @products = [] @products = hashed_products['ItemSearchResponse']['Items']['Item'].each do |item| product = OpenStruct.new product.name = item['ItemAttributes']['Title'] product.url = item['DetailPageURL'] product.image_url = item['LargeImage']['URL'] @products << product end end end 

index.html.erb

 

Products from Amazon Product Advertising API

我不会将整个亚马逊哈希变成OpenStruct 。 由于product.name nil ,因此无法对其进行查找。

相反,只需遍历Amazon项目,将它们分配给您的产品,然后添加到@products数组:

 @products = [] hashed_products['ItemSearchResponse']['Items']['Item'].each do |item| product = OpenStruct.new product.name = item['ItemAttributes']['Title'] @products << product end