我正在通过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
的方法,它确实需要参数。
有谁看到我做错了什么?任何帮助都将非常感激。
答案 0 :(得分:-1)
如果您正在调用类方法而不是实例方法,那么它应该是
def self.account_activation(user)
@user = user
mail to: user.email, subject: "Account activation"
end
然后
UserMailer.account_activation(user)