gpt4 book ai didi

ruby-on-rails - Michael Hartl 的 Rails 教程 : Figure 12. 11:密码重置表单

转载 作者:行者123 更新时间:2023-12-04 07:40:30 25 4
gpt4 key购买 nike

在教程(第 4 版,针对 Rails 5)中,我来到了第 12 章。
如果忘记密码,可以重置密码。我检查并仔细检查了我的代码,并将其与 Michael 在 Bitbucket 中的文件进行了比较:https://bitbucket.org/railstutorial/sample_app_4th_ed/src/6c255b27f7c7935dd9b04f28d3a249af8618242f/?at=password-reset
发生什么了?发送密码重置电子邮件后(没有问题,afaik),文本显示“按照代码 list 12.11 中的链接应该呈现密码重置表单。结果显示在图 12.11 中。”

但是,重置表单没有出现;相反,我立即被重定向到根目录,没有消息或错误。

我发现之前问过一个类似的问题,但无法弄清楚解决方案是什么;在哪里寻找错误?

我仍然可以被认为是一个新手,不幸的是,我不知道如何解决这个问题......

感谢您的帮助,广告

答案很有帮助,但对我的帮助还不够;我将编辑更多信息:(在 $ rails console 中)我输入:
>> User.find_by(email: "example@railstutorial.org")
User Load (1.4ms) SELECT "users".* FROM "users" WHERE "users"."email" = ? LIMIT ? [["email", "example@railstutorial.org"], ["LIMIT", 1]]
=> #<User id: 1, name: "Example User", email: "example@railstutorial.org", created_at: "2016-07-28 22:52:07", updated_at: "2016-08-03 16:51:52", password_digest: "$2a$10$IFxi0SPvA/I4rY53g.PrF.Ihxgb9.KtZpC2jcjWLgqk...", remember_digest: nil, admin: true, activation_digest: "$2a$10$J49AUluY8tSVExQBeDeCoO3U8bCHgNEgNjMyVtFmzT6...", activated: true, activated_at: "2016-07-28 22:52:06", reset_digest: "$2a$10$GGExFYbJIqhqSZq.Nc7hUeJhnbTRmtPjsAd89K99X8L...", reset_sent_at: "2016-08-03 16:51:52">

您会看到此“示例用户”已激活,并且发送了重置。
因此,“问题”(或挑战)在于已验证的?(属性, token )方法;这不是很明显吗?

我怎样才能研究这种方法的“内部运作”?对于我这个新手来说,我很困惑如何做到这一点。
pry对我来说是新的;直到现在,Hartl 的教程都没有提到这一点。我见过的唯一可能的选择是 debugger .那可以用吗?

另一个问题,关于 :reset这究竟是什么?一个符号?但是这个符号代表什么?它是指内置的方法、变量吗?

我在想,也许更多的调试信息可以放在屏幕上?例如,在 app/views/layouts/application.html.erb如果有这一行:
<%= debug(params) if Rails.env.development? %>
可以增强吗?

更新:当我注释掉最后一行时,我发现图 12.11 中的屏幕确实出现了:redirect_to root_url

最佳答案

在 app/controllers/passwords_resets_controller.rb 注意到有几个 before_action调用编辑操作。其中之一是...

  before_action :valid_user,       only: [:edit, :update]

def valid_user
unless (@user && @user.activated? &&
@user.authenticated?(:reset, params[:id]))
redirect_to root_url
end
end
redirect_to root_url正是您遇到的问题,所以一定是 (a) 没有 @user找到,或 (b) @user.activated?不正确或 (c) @user.authenticated?(:reset, params[:id])不是真的。

因此,要解决此问题,您需要找出哪些条件失败,然后找出原因。你可以用 pry 来做到这一点(我不知道 Hartl 教程是否涵盖 pry )或者您可能想要设置一些 Rails.logger.info 行来检查变量。

关于ruby-on-rails - Michael Hartl 的 Rails 教程 : Figure 12. 11:密码重置表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38754165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com