Как лучше всего показать моим пользователям предварительный просмотр шаблонов электронной почты в Ruby on Rails? - PullRequest
2 голосов
/ 10 ноября 2009

Мое программное обеспечение отправляет электронные письма пользователям. Я хочу показать им, как будут выглядеть письма до их отправки. Однако с соглашениями ActionMailer весь шаблон находится в одном файле. Это означает html, заголовок, теги body и т. Д. Кто-нибудь может придумать, как дать моим пользователям предварительный просмотр того, как будут выглядеть отправляемые мной письма?

Спасибо!

1 Ответ

1 голос
/ 10 ноября 2009

У меня была такая же проблема. Я построил дисплей с соответствующей моделью, которую я отправлял, а не в почтовой программе. Я был в состоянии предоставить пример данных или данные в реальном времени, чтобы отобразить их пользователю. когда пришло время на самом деле отправить его, я сделал то же самое в представлении почтовой программы

EDIT: Я заранее прошу прощения за имена переменных дерьма. Я не уверен, что мне разрешено явно говорить о них:)

Допустим, у меня есть функция BarMailer с именем foo (status, bar) где статус - это тестовое электронное письмо или действующее электронное письмо, а бар - моя связанная модель.

Я позвонил в delivery_foo ("test", bar)

delivery_foo отправляет многокомпонентное сообщение, поэтому для каждой части я выполняю render_message и передаю нужные мне переменные. например:

p.body = render_message('bar_html', :bar => bar, :other_data => bar.other_data)

так, что render_message говорит, что специально использует представление bar_html (у меня также есть bar_text для простого текста).

это содержимое моего представления bar_html:

<%=render :inline => @bar.some_parent.some_other_model.html, :locals => {:other_data => @other_data, :time => Time.now, :bar => @bar }%>

Это немного сложно, но оно основано на системе шаблонов. Благодаря повсеместному рендерингу я могу использовать один и тот же код для ряда различных функций, включая предварительный просмотр и отправку. Мне нравится это, потому что это становится WYSIWIG. Никакого дополнительного кода или функциональности, которые могли бы быть ошибочными и испортить потенциальный вывод в электронном письме. Если он работает в одной области, он будет работать в другой. К тому же, сохраняя его СУХОЕ, я не забуду изменить копию (что я часто делал, хе-хе).

...