2016-06-28 5 views
0

Dies ist mein erster Versuch, eine Shopify-App zu erstellen. Alles, was ich versuche, ist, meinen Laden nach Bestelldetails abzufragen.Zugriff auf einige Methoden von Shopify Order API möglich

Nachdem ich die Tutorials: https://www.youtube.com/watch?v=DB48N8rRHFw und die Shopify_app auf Github abgeschlossen habe, habe ich eine App, die ich in einem Entwicklungsgeschäft installieren und testen kann. Ich habe die Standard-Produktabfrage ausgeschaltet und stattdessen versucht, sie durch eine Abfrage für Bestellungen zu ersetzen.

Der aktuelle Code ist wie folgt:

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

und 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> 

Die Sache, die ich von mir nicht für das Leben tun verstehen ist, wie ich vollständig sein kann erfolgreich die Werte wie Erstellungsdatum, Gesamtkosten, Steuern usw. erhalten, aber ich stoße auf massive Probleme, wenn es darum geht, die Werte aus den Eigenschaften, die Hashes sind, zu erhalten. jedoch Mit worden https://help.shopify.com/api/reference/order als meine API-Referenz verwenden, weiß ich, dass sie existieren, wenn ich die app laufen, ich folgendes aus den Heroku Protokolle erhalten:

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' 

Offensichtlich verstehe ich nicht etwas, wahrscheinlich sehr Fundamentales über Dies. Wenn es keine Versandadresse gäbe, würde ich immer noch "Null" oder so etwas zurückbekommen; es ist so komisch, dass der Fehler darin besteht, dass die Methode nicht existiert.

Edit: Ich sollte wahrscheinlich Edelstein-Versionen beachten, falls das die Ursache ist. shopify_api (4.2.2), shopify_app (7.0.7), json (1.8.3) und Ruby 2.3.0p0 verwenden. Wenn es ein anderes Juwel gibt, das die Ursache sein könnte, sag es mir einfach und ich werde es mir ansehen.

+0

http://stackoverflow.com/questions/11382519/does-shopify-order-api-allows-filtering-by-nested-fields/11382976#11382976 ist eine frühere Quelle, die ich gefunden hatte, als ich nach Antworten suchte um das selbst zu beheben. Er notiert sogar, wie er die Notation erfolgreich verwenden kann: order.shipping_address. . Ich verstehe nicht, warum ich das bisher nicht kann. – Brady

Antwort

1

Meine erste Testauftrag, den ich erstellt hatte, fehlte ein Kunde direkt, dh keine Lieferadresse zu ziehen. Ich habe das Feld beim ersten Mal einfach übersehen und danach nie bemerkt. Es war nicht so, dass es Null zurück gab oder so etwas, das Feld existierte einfach nie zuvor; Das war mein Problem.

Sobald ich die Bestellung entfernt und getestet mit denen, die die Informationen von Interesse hatte, war order.shipping_address.city erfolgreich.

1

Von dem, was ich sehe, Sie erwähnten, dass er als Hash zurückgibt, so, Sie könnten es wie ein Hash versuchen wollen Aufruf

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

Das Verfahren kann auch mich undefined macht denken, dass es der Fall ist. Weil es sagt, dass es keinen getter für shipping_address gibt.

+0

Die Verwendung des von Ihnen geschriebenen Codes ergab nur einen Fehler der nicht definierten Methode '[]'. Ich würde nicht zweifeln, dass dies die grundlegende Sache ist, die ich vermisse. Allerdings habe ich nur Hash gesagt, weil das etwas war, was ich gelesen hatte, als ich das selbst herausfinden wollte. – Brady

+0

Nun, typischer Debugging-Prozess, den Sie versuchen könnten, ist herauszufinden, die Klasse des Artikels in Frage mit <% = order.class%> '. Dies kann Ihnen genug Informationen geben, um mit Ihnen zu arbeiten und es herauszufinden, wenn nicht, können Sie immer eine Liste von Methoden bekommen, indem Sie '<% = order.methods%>' Hope that help! –

+0

order.class reagierte wie erwartet mit ShopifyAPI :: Order. Auftrag.Methoden reagierten mit einer Textwand, die nichts aussagte, was mir nützlich erschien. Keine der unter https://help.shopify.com/api/reference/order gefundenen Methoden wurde aufgelistet, nicht einmal die, die ich gerade erfolgreich nutzen kann. – Brady

Verwandte Themen