2017-07-25 57 views
0

我在Rails 5動作郵件程序中遇到了這個奇怪的錯誤。ActionMailer未定義的方法'default'

# app/mailers/application_mailer.rb 
class ApplicationMailer < ActionMailer::Base 
    default from: "[email protected]" 
    layout 'mailer' 
end 

IRB

~/workspace/rails5 > rails c  [email protected] 
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 > 

這是軌道的默認腳手架5

兩個很奇怪的事情發生了,首先是它總是告訴我未初始化的常量,那麼trows默認是不是方法之後。

只是想知道如何解決它,或者我應該降級到鐵路5.0

+0

退出控制檯,嘗試'彈簧停止',然後再次運行控制檯 –

+0

如果有疑問,請責備spring.Exiting控制檯應該沒有必要,但'bin/spring stop'通常會修復一些非常奇怪的Rails問題。 – meagar

+0

@meagar「退出控制檯」,我的意思是退出導軌控制檯,而不是shell終端:) –

回答

0

的解決方案竟然是,如果你有一個名爲mail模型ActionMailer將抓住這一個第一,而不是軌道類。如果發生這種情況,那麼它會在第一次失敗,但第二次將加載rails類並嘗試將它們一起粉碎。允許子模塊工作,但將主類視爲猴子路徑。

相關問題