Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails NoMethodError:未定义的方法`mail';对于main:rails控制台上的对象_Ruby On Rails_Ruby_Actionmailer - Fatal编程技术网

Ruby on rails NoMethodError:未定义的方法`mail';对于main:rails控制台上的对象

Ruby 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

我想测试一下梅勒的工作能力。通常在rails上,我首先在控制台级别测试我的代码逻辑,然后一旦成功,我就将其放入真正的源代码中。在使用ApplicationMailer时,我也在尝试这样做。我遵循了其他一些解决方案,首先在rails控制台上运行以下命令,以首先设置ActionMailer

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。请参阅此链接