Sending object as a variable to Mandrill via Rails

删除回忆录丶 提交于 2019-12-12 02:27:49

问题


I'm converting an email template from Rails to Mandrill, the content for which requires a fair amount of data, some of which is nested through several associations.

Therefore, I'd like to pass objects via Mandrill's global_merge_vars, such as the (simplified) following:

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

Which passes through to the mandrill template under the order variable similar to the following:

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

The problem is, I can't access anything within order (using Handlebars), i.e. {{order.id}}, {{order['id']}} etc. wont work.

It's not an option to break out data into a large number of variables, as some elements are collections and their associations.

I believe the problem occurs as everything is stringified when the variables are compiled for Mandrill -- therefore breaking the JSON object -- with the following a snippet of what is sent across:

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

I can't seem to find any documentation / suggestions for dealing with this, so am wondering whether this it's possible to pass data of this nature, and, if so, how to correctly pass it to be able to access the objects in the Mandrill template. Any advice greatly appreciated!

Steve.


回答1:


try this:

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


来源:https://stackoverflow.com/questions/37071092/sending-object-as-a-variable-to-mandrill-via-rails

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!