This blog is part of our Rails 5.2 series.
Rails has inbuilt feature to preview the emails using Action Mailer previews.
A preview mailer can be setup as shown here.
class NotificationMailer < ApplicationMailer def notify(email: email, body: body) user = User.find_by(email: email) mail(to: user.email, body: body) end end class NotificationMailerPreview < ActionMailer::Preview def notify NotificationMailer.notify(email: User.first.email, body: "Hi there!") end end
This will work as expected. But our email template is displayed differently based on user’s role. To test this, we need to update the notify method and then check the updated preview.
What if we could just pass the email in the preview URL.
In Rails 5.2, we can pass the params directly in the URL and params will be available to the preview mailers.
Our code can be changed as follows to use the params.
class NotificationMailerPreview < ActionMailer::Preview def notify email = params[:email] || User.first.email NotificationMailer.notify(email: email, body: "Hi there!") end end
This allows us to test our mailers with dynamic input as per requirements.