未定义的方法`默认'对于ActionMailer

时间:2017-07-25 21:15:57

标签: ruby-on-rails ruby ruby-on-rails-5 actionmailer irb

我在使用Rails 5动作邮件时遇到了这个奇怪的错误。

# app/mailers/application_mailer.rb
class ApplicationMailer < ActionMailer::Base
  default from: "from@example.com"
  layout 'mailer'
end

IRB

~/workspace/rails5 > rails c       ruby-2.4.1@rails5
Running via Spring preloader in process 45498
Loading development environment (Rails 5.1.2)
2.4.1 :001 > ApplicationMailer
     NameError: uninitialized constant Mail::TestMailer
     from app/mailers/application_mailer.rb:1:in `<top (required)>'
     from (irb):1
2.4.1 :002 > ApplicationMailer
     NoMethodError: undefined method `default' for ApplicationMailer:Class
     from app/mailers/application_mailer.rb:3:in `<class:ApplicationMailer>'
     from app/mailers/application_mailer.rb:1:in `<top (required)>'
     from (irb):2
2.4.1 :003 >

这是rails 5的默认支架。

两个非常奇怪的事情发生在第一个是它总是告诉我未初始化的常量然后trows默认不是一个方法。

只是想知道如何解决它或者我是否应该降级到Rail 5.0

1 个答案:

答案 0 :(得分:0)

解决方案结果是,如果你有一个名为mail的模型,ActionMailer将首先获取那个而不是rails类。如果发生这种情况,那么它第一次失败但第二次将加载rails类并尝试将它们粉碎在一起。允许子模块工作,但将主类视为猴子路径。