Ruby on rails NoMethodError:未定义的方法`mail';对于main:rails控制台上的对象
我想测试一下梅勒的工作能力。通常在rails上,我首先在控制台级别测试我的代码逻辑,然后一旦成功,我就将其放入真正的源代码中。在使用ApplicationMailer时,我也在尝试这样做。我遵循了其他一些解决方案,首先在rails控制台上运行以下命令,以首先设置ActionMailerRuby on rails NoMethodError:未定义的方法`mail';对于main:rails控制台上的对象,ruby-on-rails,ruby,actionmailer,Ruby On Rails,Ruby,Actionmailer,我想测试一下梅勒的工作能力。通常在rails上,我首先在控制台级别测试我的代码逻辑,然后一旦成功,我就将其放入真正的源代码中。在使用ApplicationMailer时,我也在尝试这样做。我遵循了其他一些解决方案,首先在rails控制台上运行以下命令,以首先设置ActionMailer ActionMailer::Base.delivery_method = :smtp ActionMailer::Base.smtp_settings = { address: 'smtp.gmail.co
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'gmail.com',
authentication: 'plain',
enable_starttls_auto: true,
user_name: '***********',
password: '******'
}
然后我运行了我的代码:
y.include? x
if true
@receiver = Model.where(category_id: "#{x}").pluck(:email)
mail(to: @receiver, subject: @subject)
end
我得到以下错误:
NoMethodError: undefined method `mail' for main:Object
from (irb):19
有人能告诉我如何在rails控制台上工作吗?您可以使用以下方法测试邮件
ActionMailer::Base.mail(from: "test@example.co", to: @receiver, subject: @subject, body: "Test").deliver
Rails提供了很多便利,例如,您可以轻松地从控制器发送邮件 在控制台中,您不在控制器的上下文中,因此您还没有进行设置。视图帮助程序也是如此 为了使用mail方法,您需要告诉Ruby在哪里查找它 这样发送邮件就足够了:
ActionMailer::Base.mail(from: "test@example.co", to: @receiver, subject: @subject, body: "Test").deliver
请记住,如果您只是想测试邮件生成,但还不想测试与SMTP的集成,您也可以使用不同的
传递方法。您是否有这行邮件(收件人:@receiver,主题:@subject)
在mailer中?或者您直接在控制台上运行它?您有mailer吗?我首先尝试在控制台rails控制台上运行它?是的,在rails控制台中运行
我可以在实际需要此功能的控制器中调用此方法吗?为此,您必须创建mailer。请参阅此链接