Rails :: MailersController#预览错误的参数个数(0表示1)

时间:2016-04-20 23:04:13

标签: ruby-on-rails ruby

我正在通过rails教程,我正在第10章设置邮件程序。现在我在account_activation电子邮件上。为了确保我以正确的方式设置它,我甚至根据sample repo对我的代码进行了双重检查,我就像他一样设置它。

完整错误为:ArgumentError in Rails::MailersController#preview wrong number of arguments (0 for 1)并指向我user_mailer#account_activation方法中的代码

 def account_activation(user) #here 
   @user = user
   mail to: user.email, subject: "Account activation"
 end

这是检查的测试代码是

class UserMailerPreview < ActionMailer::Preview
  # Preview this email at http://localhost:3000/rails/mailers/user_mailer/account_activation
  def account_activation
    user = User.first
    user.activation_token = User.new_token
    UserMailer.account_activation(user) #setting up the method call here
  end
end

我不确定为什么会这样,因为我通过UserMailer.account_activation(user)传递了正确数量的参数。我唯一的猜测是,它可能正在查看UserMailerPreview#account_activation(不带参数)方法,并试图镜像UserMailer#account_activation的方法,它确实需要参数。

有谁看到我做错了什么?任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:-1)

如果您正在调用类方法而不是实例方法,那么它应该是

 def self.account_activation(user)
   @user = user
   mail to: user.email, subject: "Account activation"
 end

然后

UserMailer.account_activation(user)