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
- 在Rails应用程序中使用CarrierWave和Amazon Elastic Transcoder
- 使用AWS RDS在Heroku App上获取Mysql2 :: Error(SSL连接错误:ASN:错误的其他签名确认)
- “拒绝访问” – 用户对S3 Bucket的权限
- 如何在Amazon Elastic Beanstalk上部署rails项目时自动重启delayed_job?
- 如何在Elastic Beanstalk上设置delayed_job时修复’require’错误
- 建议在Ruby中为S3 Bucket生成预签名URL的方法
- AWS SNS – 推送GCM显示为从Cloudwatch发送但未在移动设备中收到
- Ruby Flow框架的AWS SWF API调用日志记录
- Mechanical Turk教程或操作指南