通过Rails将对象作为变量发送到Mandrill

我正在将一个电子邮件模板从Rails转换为Mandrill,其内容需要相当数量的数据,其中一些数据通过多个关联嵌套。

因此,我想通过Mandrill的global_merge_vars传递对象,例如(简化)以下:

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

它通过orderr变量下的mandrill模板,类似于以下内容:

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

问题是,我无法访问order任何内容(使用Handlebars),即{{order.id}}{{order['id']}}等不会工作。

将数据分解为大量变量不是一种选择,因为一些元素是集合及其关联。

我相信问题就出现了,因为在为Mandrill编译变量时所有内容都是字符串化的 – 因此打破了JSON对象 – 下面是一段发送的内容:

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

我似乎无法找到任何处理这个的文档/建议,所以我想知道是否可以传递这种性质的数据,如果是这样,如何正确传递它以便能够访问Mandrill中的对象模板。 任何建议非常感谢!

史蒂夫。

试试这个:

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