【问题标题】:Preview devise mailer not found未找到预览设计邮件程序
【发布时间】:2019-10-26 18:32:57
【问题描述】:

我尝试预览设计邮件,但它不起作用。

我已经关注了这个rails guide,看起来并不难,而且要做的事情很多。

设计已经有一个邮件类here

所以我只需要创建一个预览文件,这就是我目前所做的。

我在存储库 app/views/users/mailer/ 中生成了我的设计视图

我有我的devise.rb,看起来像这样

Devise.setup do |config|
# ==> Mailer Configuration
  # Configure the e-mail address which will be shown in Devise::Mailer,
  # note that it will be overwritten if you use your own mailer class
  # with default "from" parameter.
  config.mailer_sender = 'please-change-me-at-config-initializers-devise@example.com'

  # Configure the class responsible to send e-mails.
  config.mailer = 'Devise::Mailer'
  # Configure the parent class responsible to send e-mails.
  #config.parent_mailer = 'ActionMailer::Base'
end

我有我的test/mailers/previews/devise_mailer_preview.rb

class DeviseMailerPreview< 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

我没有在我的application.rb 中更改路径config.action_mailer.preview_path,因为test/mailers/previews 是默认路径

所以现在当我尝试访问http://localhost:3000/rails/mailers 时,我有一个白色的空白页面 如果我尝试http://localhost:3000/rails/mailers/users/mailer/confirmation_instructions 我有这个错误Mailer preview 'users/mailer/confirmation_instructions' not found

我尝试了许多不同的链接,但仍然有同样的错误,我也尝试关注这个stackoverflow answer,但没有成功。

这似乎很容易,但我无法成功......

【问题讨论】:

  • config.mailer = 'Devise::Mailer' 提供了该问题的提示。您应该在设计目录中访问预览。也许你的班级应该是Devise::MailerPreview
  • 可惜还是不行……

标签: ruby-on-rails devise


【解决方案1】:

好的,我找到了原因。

因为我正在使用 gem rspec-rails 存储库 test 被替换 tp spec 我只需要将我的test/mailers/previews/devise/mailer_preview.rb移动到spec/mailers/previews/devise/mailer_preview.rb,仍然不需要更改config/application.rb的配置

希望对大家有所帮助

还请注意,在 rails 6 中,您的设计邮件预览应该使用模块编写

module Devise
class 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
end

【讨论】:

    【解决方案2】:

    移动邮件文件夹对我有用!

    【讨论】:

    猜你喜欢
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    相关资源
    最近更新 更多