【发布时间】:2013-11-08 02:08:46
【问题描述】:
我正在尝试使用 Devise 在应用中实现密码重置功能。我正处于“忘记密码”链接起作用的地方(因为它发送电子邮件),并且电子邮件包含“更改我的密码”的链接。
更改密码链接有效,并将您发送到一个表单(在 URL http://localhost:3000/users/password/edit?reset_password_token=c7cKb4hMhSLRs72n9dYj),要求输入新密码(并确认),但在输入新密码并单击“更改我的密码”后,它重定向到localhost:3000/users/password 并说“请查看以下问题:”并提供一个来自电子邮件的一个字段,以及一个用于“发送密码重置说明”的按钮。这当然是提交邮件获取密码重置说明的表单,但也有“不能为空”的错误提示,好像有人点击了字段为空的按钮。
我使用了一个教程来配置 ActionMailer 以发送电子邮件,我认为这将是这个过程中最困难的部分,但现在我无法弄清楚为什么更改密码的表单不起作用。
我对 Rails 很陌生,这是我第一次使用 Devise 和 ActionMailer,所以如果我没有提供一些需要的信息,我深表歉意。请告诉我,我可以添加任何有帮助的内容。
谢谢。
【问题讨论】:
-
我不认为 actionmailer 是这里的问题,特别是因为你说它可以很好地发送电子邮件。否则它不会向您显示表格。可以分享一下重置密码的控制器代码吗?
-
我也是这么想的,但我不知道如何查看控制器的密码,因为我认为它内置于设计中。我可以通过运行
rails g devise:views来显示设计视图,但我认为显示设计控制器是不可能的。 -
那你能显示
passwords#edit吗?还有你用的是什么版本的设计? -
我很确定我正在运行 2.2。在我的 gemfile 我有
gem 'devise',所以我认为它应该运行最新版本(我认为是 2.2)。我不知道如何显示passwords#edit。这不代表编辑密码的路径吗?不过,当我在终端中运行rake routes时,我确实有edit_user_password GET /users/password/edit(.:format) devise/passwords#edit。 -
好的,我想我找到了设计控制器here,它的编辑方法有以下代码:
def edit self.resource = resource_class.new resource.reset_password_token = params[:reset_password_token] end
标签: ruby-on-rails forms email devise passwords