Odpowiedź Daniela to dobry początek, ale jeśli szablony wiadomości e-mail zawierają dynamiczne dane, to nie zadziała. Załóżmy np., Że Twój e-mail jest potwierdzeniem zamówienia i w nim drukujesz @order.total_price
- przy użyciu poprzedniej metody @order
zmienna będzie zerowa.
Oto mały przepis, którego używam:
Po pierwsze, ponieważ ta funkcja podglądu e-mail jest zdecydowanie przeznaczona tylko do użytku wewnętrznego, skonfigurowałem kilka ogólnych tras w przestrzeni nazw administratora:
#routes.rb
MySite::Application.routes.draw do
namespace :admin do
match 'mailer(/:action(/:id(.:format)))' => 'mailer#:action'
end
end
Następnie tworzę kontroler. W tym kontrolerze tworzę jedną metodę na szablon wiadomości e-mail. Ponieważ większość wiadomości e-mail zawiera dane dynamiczne, musimy wypełnić wszelkie zmienne składowe, których oczekuje szablon.
Można to zrobić za pomocą urządzeń, ale zazwyczaj wolę po prostu pobrać pseudolosowe rzeczywiste dane. Pamiętaj - to NIE jest test jednostkowy - to wyłącznie pomoc rozwojowa. Nie musi dawać tego samego wyniku za każdym razem - w rzeczywistości - prawdopodobnie lepiej, jeśli nie!
#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
Zauważ, że kiedy renderujemy szablon, używamy layout=>:mailer
. Powoduje to osadzenie treści wiadomości e-mail w układzie wiadomości e-mail w formacie HTML, który utworzyłeś, zamiast w typowym układzie aplikacji internetowej (np application.html.erb
.).
I to wszystko. Teraz mogę odwiedzić http://example.com/admin/mailer/preview_welcome, aby wyświetlić podgląd zmiany w moim szablonie powitalnej wiadomości e-mail.