NoMethodError:未定义的方法“mail”

9

在 Ruby on Rails (3.2.6) 中设置邮件程序 (3.2.6) 后,我遇到了以下错误:

NoMethodError (undefined method `mail' for #):

我的 user_mailer.rb 文件如下:

class UserMailer < ActionMailer::Base
  default :from => "test@test.com"

  def activation_mail(user)
    @user = user
    mail(:to => user.mail, :subject => "Registration")
  end
end

我遵循这里提供的示例:http://guides.rubyonrails.org/action_mailer_basics.html 在配置文件中,我添加了以下这行代码: config.action_mailer.delivery_method = :test 我还尝试了使用 :smtp 和为 gmail 进行配置。
我错过了什么?

请问您能否接受一个答案? - doug
5个回答

4

最近我遇到了类似的问题,解决方法是将以下代码替换:

def self.activation_mail()

使用

def activation_mail()

3
你应该尝试替换

def activation_mail(user)
    @user = user
    mail(:to => user.mail, :subject => "Registration")
  end

使用

def activation_mail(user)
    @user = user
    mail(:to => @user.mail, :subject => "Registration")
  end

2

这是一个打字错误。你的user.mail不存在。可能应该是user.email或其他内容。


0

我发现您的邮件视图中有一个错别字可能会导致这个问题。错误信息是误导性的。


0

我敢打赌你传递的“user”对象要么没有正确实例化,要么是一个数组而不是单个的User对象


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接