Rails ActionMailer 用户邮件发送器 无方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails ActionMailer 用户邮件发送器 无方法相关的知识,希望对你有一定的参考价值。
我不能让我的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: "test@example.co", to: '...@gmail.com', 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
以上是关于Rails ActionMailer 用户邮件发送器 无方法的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Actionmailer/Ruby on Rails 发送具有多个动态 smtp 的电子邮件
使用 ActionMailer 在 Rails 中发送给多个收件人
ActionMailer 在开发 Rails 4 中不发送邮件
Rails - 你如何测试 ActionMailer 在测试中发送了特定的电子邮件