我有一个全新的 Rails 4.1.1 应用程序,我正在其中自定义 Devise 电子邮件。我想让它们显示在新的 Rails 电子邮件预览功能中,所以我执行了以下操作:
1) 将以下片段添加到我的 config/development.rb
文件中:
config.action_mailer.preview_path = "#{Rails.root}/lib/mailer_previews"
2) 在 app/mailers/user_mailer.rb
中创建我的自定义 Devise 电子邮件 UserMailer
:
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
到目前为止,还不错。看起来我做对了一切。但是后来我尝试在/rails/mailers/user_mailer/confirmation_instructions 路由中查看 confirmation_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
方法的方式有问题。任何人都可以在这里帮助我吗?
最佳答案
对于那些希望在不使用自定义邮件程序的情况下预览 Devise 电子邮件(但仍然是自定义电子邮件)的人,这就是我所做的:
配置您的应用以进行电子邮件预览。
设置 Devise Mailer 预览类
一个。 rails ~> 4.1
# mailer/previews/devise_mailer_preview.rb class Devise::MailerPreview < ActionMailer::Preview def confirmation_instructions Devise::Mailer.confirmation_instructions(User.first, "faketoken") end def reset_password_instructions Devise::Mailer.reset_password_instructions(User.first, "faketoken") end ... end
rails ~> 5.0
class DeviseMailerPreview < ActionMailer::Preview ... # same setup as Rails 4 above
重启服务器
关于ruby-on-rails - Rails 4.1 Mailer 预览和设计自定义电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23716397/