2016-05-06 2 views
0

Я конвертирую шаблон электронной почты из Rails в Mandrill, контент для которого требует достаточного количества данных, некоторые из которых вложены через несколько ассоциаций.Отправка объекта в качестве переменной в Mandrill через Rails

Поэтому я хотел бы передавать объекты с помощью global_merge_vars Mandrill, такие как (упрощенный) следующим:

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

, который проходит через к шаблону Mandrill под 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 (с помощью рулей), т.е. {{order.id}}, {{order['id']}} и т.д. не будут работать.

Невозможно разбить данные на большое количество переменных, так как некоторые элементы являются коллекциями и их ассоциациями.

Я считаю, что проблема возникает, как все строковой, когда переменные компилируются для Mandrill - поэтому нарушая объект JSON - со следующего фрагмента кода того, что передается по:

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

Я могу» t, похоже, найдет какую-либо документацию/предложения для решения этой проблемы, поэтому мне интересно, можно ли передавать данные такого рода, и если да, то как правильно передать ее, чтобы иметь возможность доступа к объектам в шаблоне Mandrill. Любой совет очень оценили!

Steve.

+0

вы можете получить доступ к нему, как '| * переменной * |' –

+0

Спасибо @pitabasprathal, я использую синтаксис Handlebar вместо этого - было бы что-то изменить? – SRack

ответ

1

попробовать это:

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

Это сделано, спасибо за помощь! Как ни странно, я пробовал это, хотя в то время у меня был синтаксис Handlebars: я искал 'order ['id']', который не работает, с правильной реализацией 'order.id'. Сочетание двух привело меня туда, где мне нужно. Очень признателен. – SRack

Смежные вопросы