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

Posted

技术标签:

【中文标题】通过 Rails 将对象作为变量发送到 Mandrill【英文标题】:Sending object as a variable to Mandrill via Rails 【发布时间】:2016-09-01 10:49:37 【问题描述】:

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

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

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

通过order变量下的山魈模板类似如下:

"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.idorder['id'] 等不起作用。

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

我相信问题的出现是因为当为 Mandrill 编译变量时所有内容都被字符串化了——因此破坏了 JSON 对象——以下是发送的 sn-p:

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

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

史蒂夫。

【问题讨论】:

你可以像|* variable*|一样访问它 谢谢@pitabasprathal,我改用 Handlebar 语法 - 会有什么不同吗? 【参考方案1】:

试试这个:

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

【讨论】:

大功告成,谢谢帮助!奇怪的是,我试过这个,虽然当时我的 Handlebars 语法有误:我正在搜索 order['id'],但它不起作用,正确的实现 order.id。将两者结合起来让我到达了我需要的地方。非常感谢。

以上是关于通过 Rails 将对象作为变量发送到 Mandrill的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Rails 通过 Web Sockets 发送二进制文件

将 JSON 对象从 rails 控制器发送到 Javascript

通过蓝牙发送序列化对象时出现 StreamCorruptedException

如何通过按钮将表单数据作为句子中的变量发送到剪贴板?

如何使 AFIncrementalStore 将数据作为对象发布到 Rails?

如何将 json 从 iOS 设备发送到 Rails 服务器