У меня есть новое приложение Rails 4.1.1, в котором я настраиваю электронные письма. Я хочу, чтобы они отображались в новой функции предварительного просмотра электронной почты Rails, поэтому я сделал следующее:
1) Добавлен следующий фрагмент в мой файл config/development.rb
:
config.action_mailer.preview_path = "#{Rails.root}/lib/mailer_previews"
2) Создал мой пользовательский адрес электронной почты UserMailer
в app/mailers/user_mailer.rb
:
class UserMailer < Devise::Mailer
helper :application # gives access to all helpers defined within `application_helper`.
include Devise::Controllers::UrlHelpers # Optional. eg. `confirmation_url`
layout "notifications_mailer"
end
3) Изменен config/initializers/devise.rb
, содержащий следующий фрагмент:
config.mailer = 'UserMailer'
4) Добавлен класс UserMailerPreview
в lib/mailer_previews
со следующим содержимым:
class UserMailerPreview < ActionMailer::Preview
def confirmation_instructions
UserMailer.confirmation_instructions(User.first, {})
end
def reset_password_instructions
UserMailer.reset_password_instructions(User.first, {})
end
def unlock_instructions
UserMailer.unlock_instructions(User.first, {})
end
end
До сих пор так хорошо. Похоже, я все сделал правильно. Но затем я пытаюсь просмотреть предварительный просмотр сообщения confirmation_instructions
по маршруту /rails/mailers/user _mailer/confirm_instructions, и я получаю следующую ошибку:
undefined method `confirmation_url' for #<#<Class:0x007fa02ab808e0>:0x007fa030fb7e80>
код для моего шаблона confirmation_url.html.erb
выглядит следующим образом:
<%= t("notifications.texts.greeting") + @user.display_name %>,
<p>You can confirm your account email through the link below:</p>
<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @token) %></p>
Что я делаю неправильно? Я предполагаю, что это неправильно с тем, как я называю метод confirmation_url
. Кто-нибудь может мне помочь?