无法访问Shopify Order API

时间:2016-06-28 16:29:13

标签: ruby shopify

这是我第一次尝试创建Shopify应用程序;我要做的就是查询我的商店的订单详情。

完成教程:https://www.youtube.com/watch?v=DB48N8rRHFw和Github上的Shopify_app后,我有一个可以安装到开发商店并进行测试的应用程序。我关闭了默认的Products查询,并尝试将其替换为Orders上的查询。

目前的代码如下:

class HomeController < ShopifyApp::AuthenticatedController
  def index
    @orders = ShopifyAPI::Order.find(:all)
  end
end

和index.html.erb:

<% content_for :javascript do %>
  <script type="text/javascript">
    ShopifyApp.ready(function(){
      ShopifyApp.Bar.initialize({
        title: "Home",
        icon: "<%= asset_path('favicon.ico') %>"
      });
    });
  </script>
<% end %>

<h2>Orders</h2>


<table border="1" style="width:100%">
  <tr>
    <th>Order ID</th>
    <th>Recipient</th>
    <th>Shipping Address</th>
    <th>Total Order</th>
    <th>Date of Order</th>
    <th>Sale Total</th>
    <th>Sales Tax</th>
    <th>Shipping Charge</th>
    <th>Payment Gateway</th>
    <th>Fulfillment Status</th>
  </tr>

  <% @orders.each do |order| %>
  <tr>
    <td><%= order.order_number %></td>
    <td>cust</td>
    <td><%= order.shipping_address.city %></td>
    <td>total</td>
    <td><%= order.created_at %></td>
    <td><%= order.subtotal_price %></td>
    <td><%= order.total_tax %></td>
    <td><%= order.shipping_lines %></td>
    <td><%= order.payment_gateway_names %></td>
    <td><%= order.fulfillment_status %></td>
  </tr>
 <% end %>
</table>

我不了解我生活的事情是我如何能够完全成功地获得创造日期,总成本,税收等价值观,但是当我遇到这个问题时,我遇到了很多问题。来自哈希属性的值。使用https://help.shopify.com/api/reference/order作为我的API参考,我知道它们存在,但是当我运行应用程序时,我从Heroku日志中获得以下内容:

2016-06-27T22:47:02.298067+00:00 app[web.1]: Processing by HomeController#index as HTML
2016-06-27T22:47:02.512071+00:00 app[web.1]:   Rendered home/index.html.erb within layouts/embedded_app (2.1ms)
2016-06-27T22:47:02.513471+00:00 app[web.1]:     32:     <td>cust</td>
2016-06-27T22:47:02.513473+00:00 app[web.1]:     36:     <td><%= order.subtotal_price %></td>
2016-06-27T22:47:02.513470+00:00 app[web.1]:     31:     <td><%= order.order_number %></td>
2016-06-27T22:47:02.513468+00:00 app[web.1]: ActionView::Template::Error (undefined method `shipping_address' for #<ShopifyAPI::Order:0x007f27612d5660>):
2016-06-27T22:47:02.513464+00:00 app[web.1]: 
2016-06-27T22:47:02.513469+00:00 app[web.1]:     30:   <tr>
2016-06-27T22:47:02.513471+00:00 app[web.1]:     33:     <td><%= order.shipping_address %></td>
2016-06-27T22:47:02.513472+00:00 app[web.1]:     34:     <td>total</td>
2016-06-27T22:47:02.513473+00:00 app[web.1]:     35:     <td><%= order.created_at %></td>
2016-06-27T22:47:02.513474+00:00 app[web.1]:   app/views/home/index.html.erb:33:in `block in _app_views_home_index_html_erb__4133370917654343554_69903554858260'
2016-06-27T22:47:02.513475+00:00 app[web.1]:   app/views/home/index.html.erb:29:in `_app_views_home_index_html_erb__4133370917654343554_69903554858260'

显然,我不了解可能非常基本的事情。如果没有送货地址,我仍会收到“零”或其他东西;奇怪的是,错误是该方法不存在。

编辑:我应该注意宝石版本,以防万一。 shopify_api(4.2.2),shopify_app(7.0.7),json(1.8.3),并使用ruby 2.3.0p0。如果有另一个宝石可能是原因,请告诉我,我会调查它。

2 个答案:

答案 0 :(得分:1)

从我看到你提到它返回哈希,所以你可能想尝试像哈希一样调用它

<%= order['shipping_address']['city'] %>

未定义的方法也让我认为是这种情况。因为它说没有shipping_address的吸气剂。

答案 1 :(得分:1)

我创建的第一个测试订单完全没有客户,这意味着没有送货地址。我一定是第一次忽略了这个领域,从来没有注意过。它并没有返回零或任何这样的东西,这个领域从未存在过;这是我的问题。

我删除订单并使用感兴趣的信息进行测试后,order.shipping_address.city就成功了。