Деніела відповіді є початок гарне, але якщо ваші поштові шаблони містять динамічні дані, він не буде працювати. Скажімо, ваш електронний лист - це квитанція про замовлення, і всередині нього ви роздруковуєте @order.total_price
- використовуючи попередній метод, @order
змінна буде нульовою.
Ось невеликий рецепт, який я використовую:
По-перше, оскільки ця функція попереднього перегляду електронної пошти, безумовно, призначена лише для внутрішнього використання, я створив кілька загальних маршрутів у просторі імен адміністратора:
#routes.rb
MySite::Application.routes.draw do
namespace :admin do
match 'mailer(/:action(/:id(.:format)))' => 'mailer#:action'
end
end
Далі я створюю контролер. У цьому контролері я створюю один метод на шаблон електронної пошти. Оскільки більшість електронних листів містять динамічні дані, нам потрібно заповнити всі змінні учасника, які шаблон очікує.
Це можна зробити за допомогою світильників, але я, як правило, вважаю за краще просто захопити деякі псевдовипадкові реальні дані. Пам'ятайте - це НЕ єдиний тест - це суто допомога розвитку. Не потрібно давати однаковий результат кожен раз - насправді - це, мабуть, краще, якщо цього немає!
#app/controllers/admin/mailer_controller.rb
class Admin::MailerController < Admin::ApplicationController
def preview_welcome()
@user = User.last
render :file => 'mailer/welcome.html.erb', :layout => 'mailer'
end
end
Зауважте, що коли ми надаємо шаблон, ми використовуємо layout=>:mailer
. Це вбудовує частину вашої електронної пошти у створений вами макет HTML-адреси електронної пошти замість типового макета веб-додатків (наприклад application.html.erb
).
І це майже все. Тепер я можу завітати на http://example.com/admin/mailer/preview_welcome, щоб переглянути зміни до свого вітального шаблону електронної пошти.