显示ShopSense API的产品

时间:2014-04-30 20:32:23

标签: ruby-on-rails json

如何使用ShopSense API

显示Rails中shopsense-ruby的产品?

JSON.parse(response)["products"]正在返回nil:

NoMethodError in Main#index
Showing /home/dev/demo-shopsense/app/views/shared/_shopsense.html.erb where line #3 raised:

undefined method `any?' for nil:NilClass
Extracted source (around line #2):

  <div class="custom_widget">
    <% if @products.any %>
      <% @products.each do |product| %>
        <div class="product">
          <%= image_tag product['image']['url'] %>
          <p><%= product['name'] %></p>

main_controller.rb

class MainController < ApplicationController
  def index
    client = Shopsense::API.new('partner_id' => 'uid0000-0000000-00')
    response = client.get_looks("New")

    @products = JSON.parse(response)["products"]
  end
end

shared/_shopsense.html.erb

<div class="custom_widget">
  <% if @products.any? %>
    <% @products.each do |product| %>
      <div class="product">
        <%= image_tag product['image']['url'] %>
        <p><%= product['name'] %></p>
      </div>
    <% end %>
  <% end %>
</div>

我已经设置了一个简单的演示应用demo-shopsense,应该很容易启动和运行。

1 个答案:

答案 0 :(得分:1)

您的请求的已解析响应如下所示:

{"totalCount"=>"536121",
 "looks"=>
  [{"id"=>"12328367",
    "title"=>"black",
    ...

正如您所看到的,而不是&#39;产品&#39;我们有&#39;看起来。

@products = JSON.parse(response)["looks"]

当您使用外部服务时,找出确切的响应格式非常重要。

编辑: 我认为在这种情况下你实际上需要使用&#39; search&#39;客户端上的方法,而不是“get_looks&#39;”,如果您想获得产品。