我正在遵循Michael Hartl的Ruby教程指南,并且正在学习第12课:密码重置表格。
我的问题是在本地测试时,不会带我进入“重置密码”表格。我在日志中看到它是TRIES TO,但是最终将我重定向到主页(“ /”根目录)。我不知道为什么要这样做,因为我正在学习本教程。但是它可以在生产中使用!如果有人想看看,我有整个GitHub存储库here。
我已经验证我的routes.rb
是正确的,因为我看到使用rake rails
的密码重置URL。我还验证了它确实是 将我重定向到/,就像在服务器日志中一样:
Started GET "/password_resets/D7-YG1GP-RNkdVJFp4PwjQ/edit?email=jessica@example.com" for 127.0.0.1 at 2019-06-23 13:13:20 -0400
Processing by PasswordResetsController#edit as HTML
Parameters: {"email"=>"jessica@example.com", "id"=>"D7-YG1GP-RNkdVJFp4PwjQ"}
User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."email" = ? LIMIT ? [["email", "jessica@example.com"], ["LIMIT", 1]]
↳ app/controllers/password_resets_controller.rb:45
Redirected to http://0.0.0.0:3000/
Filter chain halted as :valid_user rendered or redirected
Completed 302 Found in 2ms (ActiveRecord: 1.0ms)
看起来罪魁祸首是valid_user
函数,但对我来说看起来不错。基本上,用户需要存在于数据库中,被激活并使用令牌进行身份验证。否则,您将被重定向。
# Confirms a valid user.
def valid_user
unless (@user && @user.activated? &&
@user.authenticated?(:reset, params[:id]))
redirect_to root_url
end
end