我正在研究Rails教程的第10章。我已跳过帐户激活并实施了密码重置邮件程序。这是代码:user_mailer_preview.rb
# Preview all emails at http://localhost:3000/rails/mailers/user_mailer
class UserMailerPreview < ActionMailer::Preview
# Preview this email at
# http://localhost:3000/rails/mailers/user_mailer/password_reset
def password_reset
user = User.first
user.reset_token = User.new_token
UserMailer.password_reset(user)
end
end
以下是用户邮件程序本身的代码:
class UserMailer < ActionMailer::Base
default from: "from@example.com"
# Subject can be set in your I18n file at config/locales/en.yml
# with the following lookup:
#
# en.user_mailer.password_reset.subject
#
def password_reset
@greeting = "Hi"
mail to: "to@example.org"
end
end
当我去http://localhost:3000/rails/mailers/user_mailer/password_reset
时,我正在
我做错了什么?
答案 0 :(得分:3)
您正在呼叫UserMailer.password_reset(user)
并传递用户
但是你的password_reset
方法没有参数。因此,您需要更改密码注册以获取用户(并使用它执行某些操作)
def password_reset(user)
#do something with the user, such as send to their email address
@greeting = "Hi"
mail to: user.email
end
或在没有用户的情况下将您的通话调整为UserMailer.password_reset
。
答案 1 :(得分:0)
对于因为方法需要参数但没有提供任何参数而到达这里的任何人,您可以通过更改默认预览来解决此问题,以便为您提供给邮件程序方法的参数提供一些默认数据。
代码here
有很好的解释