我不能让我的user_mailer工作。它说没有方法,我找不到原因。
从Rails中:
NoMethodError in AtendimentosController#create
undefined method `welcome_email' for UserMailer:Module
从Rails C(手动测试):
irb(main):027:0> ActionMailer::usermailer.send_welcome_email(from: "[email protected]", to: '[email protected]', subject: 'subjecto de teste', body: "Test")
Traceback (most recent call last):
2: from (irb):27
1: from (irb):27:in `rescue in irb_binding'
NoMethodError (undefined method `usermailer' for ActionMailer:Module)
class UserMailer位于mailersuser_maileruser_mailer.rb。
class UserMailer < ApplicationMailer
def welcome_email(user)
mail(:to => @user.email, :subject => "Welcome!")
end
end
我在控制器处调用。
def send_mail
UserMailer.welcome_email(self).deliver_later
end
你应该把这个类移到 /mailers/user_mailer.rb
. 当你把文件放在一个单独的文件夹中时,要求文件的开头必须是------。Module ModuleName
. 所以在你的例子中,当你把这个文件放在 /mailers/user_mailer/user_mailer.rb
它应该是这样的。
module UserMailer
class UserMailer < ApplicationMailer
def welcome_email(user)
mail(:to => @user.email, :subject => "Welcome!")
end
end
end
然后你把它叫做: UserMailer::UserMailer.welcome_email(self).deliver