2016-05-06 12 views
0

Ich konvertiere eine E-Mail-Vorlage von Rails in Mandrill, deren Inhalt eine recht große Menge an Daten benötigt, von denen einige über mehrere Verknüpfungen verschachtelt sind.Objekt per Drag & Drop als Variable an Mandrill senden

Daher würde Ich mag Objekte über Mandrills global_merge_vars passieren, wie der (vereinfachte) folgende:

[{ 'name'=>'order', 'content'=> @order.to_json(include: 
               { user: { only: :first_name } }, 
                methods: [:method1, 
                  :method2, 
                  :method3, 
                  :method4]) 
}] 

, die an die Mandrill Vorlage unter der order Variable ähnlich der folgenden durchläuft:

{"id":11,"number":"xxxx","item_total":"112.0"... 
"user":{"first_name":"Steve"},"method1":"£0.00","method2":"£112.00", 
"method3":"£112.00","method4":"£0.00"} 

Das Problem ist, dass ich nicht alles innerhalb order zugreifen kann (mit Lenkern), dh {{order.id}}, {{order['id']}} usw. nicht funktionieren.

Es ist keine Option, Daten in eine große Anzahl von Variablen aufzuteilen, da einige Elemente Sammlungen und deren Zuordnungen sind.

Ich glaube, das Problem tritt auf, da alles Zeichenfolge wird, wenn die Variablen für Mandrill kompiliert werden - daher das JSON-Objekt zu brechen - mit dem folgenden Snippet von dem, was über gesendet wird:

"global_merge_vars"=>[{"name"=>"order", "content"=>"{\"id\":11, 
\"number\":\"xxxx\",\"item_total\":\"112.0\"... 

ich kann‘ Es scheint, als ob Sie irgendwelche Dokumentation/Vorschläge finden, um damit umzugehen, also frage ich mich, ob es möglich ist, Daten dieser Art zu übergeben und, wenn ja, wie man sie korrekt weitergibt, um auf die Objekte in der Mandrill-Vorlage zugreifen zu können. Jeder Rat sehr geschätzt!

Steve.

+0

Sie darauf zugreifen können wie '| * Variable * |' –

+0

Dank @pitabasprathal, ich stattdessen die Lenker Syntax - das würde einen Unterschied machen? – SRack

Antwort

1

versuchen Sie dies:

[{ 'name'=>'order', 'content'=> JSON.parse(@order.to_json(include: 
              { user: { only: :first_name } }, 
               methods: [:method1, 
                 :method2, 
                 :method3, 
                 :method4])) 
}] 
+0

Das ist es, danke für die Hilfe! Seltsamerweise hatte ich das versucht, obwohl ich zu der Zeit die Syntax meines Handlebars falsch hatte: Ich suchte 'order ['id']', was nicht funktioniert, mit der korrekten Implementierung 'order.id'. Die Kombination der beiden hat mich dahin gebracht, wo ich sein muss. Sehr geschätzt. – SRack