如何将 Amazon Products API 映射到 Rails?

问题描述 投票:0回答:1

我正在尝试从 Amazon Products API 获取产品(使用 https://github.com/hakanensari/vacuum/)并将它们显示在我的 Rails 应用程序中。但是如何将产品名称和照片带入我的视图?

目前获得:

ActionView::Template::Error (undefined method `image' for #<Array:0x88486aec>):
    2: <% if @products.any? %>
    3:   <% @products.each do |product| %>
    4:     <div class="product">
    5:       <%= link_to image_tag(product.image.url), product.url %>
    6:       <%= link_to product.name, product.url %>
    7:     </div>
    8:   <% end %>

main_controller.rb:

class MainController < ApplicationController
  def index
    request = Vacuum.new('GB')

    request.configure(
      aws_access_key_id: 'ABCDEFGHIJKLMNOPQRST',
      aws_secret_access_key: '<long messy key>',
      associate_tag: 'lipsum-20'
    )

    params = {
      'SearchIndex' => 'Books',
      'Keywords'=> 'Ruby on Rails'
    }

    #
    # NOT SURE WHERE TO TAKE IT FROM HERE
    #

    raw_products = request.item_search(query: params)

    @products = raw_products.to_h
    product = OpenStruct.new(@products)
  end
end

index.html.erb:

<% if @products.any? %>
  <% @products.each do |product| %>
    <div class="product">
      <%= link_to image_tag(product.image.url), product.url %>
      <%= link_to product.name, product.url %>
    </div>
  <% end %>
<% end %>
ruby-on-rails ruby amazon-product-api excon
1个回答
1
投票

您收到错误消息是因为

raw_products
不是数组。作为 par
vacuum
文档,您必须通过
raw_products.to_h
将其转换为哈希,或者您也可以将响应主体传递到您自己的解析器中以进行一些自定义 XML 繁重的工作:

MyParser.new(raw_products.body) 

所以你必须先正确解析响应,然后再使用它。


您只需执行以下操作:

  @products = raw_products.to_h
  product = OpenStruct.new(@products)
© www.soinside.com 2019 - 2024. All rights reserved.