我将电子邮件模板从Rails转换为Mandrill,其内容需要相当数量的数据,其中一些数据通过多个关联嵌套。
因此,我想通过Mandrill的global_merge_vars传递对象,例如以下(简化):
[{ 'name'=>'order', 'content'=> @order.to_json(include:
{ user: { only: :first_name } },
methods: [:method1,
:method2,
:method3,
:method4])
}]
传递到order
变量下的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模板中的对象。任何建议都非常感谢!
史蒂夫。
答案 0 :(得分:1)
试试这个:
[{ 'name'=>'order', 'content'=> JSON.parse(@order.to_json(include:
{ user: { only: :first_name } },
methods: [:method1,
:method2,
:method3,
:method4]))
}]