这是我第一次尝试创建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。如果有另一个宝石可能是原因,请告诉我,我会调查它。
答案 0 :(得分:1)
从我看到你提到它返回哈希,所以你可能想尝试像哈希一样调用它
<%= order['shipping_address']['city'] %>
未定义的方法也让我认为是这种情况。因为它说没有shipping_address的吸气剂。
答案 1 :(得分:1)
我创建的第一个测试订单完全没有客户,这意味着没有送货地址。我一定是第一次忽略了这个领域,从来没有注意过。它并没有返回零或任何这样的东西,这个领域从未存在过;这是我的问题。
我删除订单并使用感兴趣的信息进行测试后,order.shipping_address.city就成功了。