未找到预览设计邮件程序

Preview devise mailer not found

我尝试预览 devise mailer,但它不起作用。

我已经按照这个 rails guide 看起来并不难,还有很多事情要做。

设计已经有一个邮件程序 class 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

我尝试了很多不同的 link 但仍然有同样的错误,我也尝试遵循这个 Whosebug answer 但没有成功。

看起来很容易,但我做不到...

好的,我找到原因了。

因为我正在使用 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

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