通过 Rails 将对象作为变量发送到 Mandrill
Sending object as a variable to Mandrill via Rails
我正在将电子邮件模板从 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 模板中的对象。非常感谢任何建议!
史蒂夫。
试试这个:
[{ 'name'=>'order', 'content'=> JSON.parse(@order.to_json(include:
{ user: { only: :first_name } },
methods: [:method1,
:method2,
:method3,
:method4]))
}]
我正在将电子邮件模板从 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 模板中的对象。非常感谢任何建议!
史蒂夫。
试试这个:
[{ 'name'=>'order', 'content'=> JSON.parse(@order.to_json(include:
{ user: { only: :first_name } },
methods: [:method1,
:method2,
:method3,
:method4]))
}]