设计 - 通过可恢复的电子邮件更新密码导致电子邮件已被占用

时间:2018-04-06 15:19:05

标签: ruby-on-rails authentication ruby-on-rails-4 devise devise-recoverable

设计版本4.3.0 Rails 4.2.8

在发送密码重置电子邮件后,我无法让用户更新密码。

Steps to reproduce
当用户从登录页面单击忘记密码时 他们在忘记密码页面上输入他们的电子邮件 然后他们发送密码重置电子邮件
在电子邮件中,他们点击链接
他们将被带到更改您的密码页面 他们输入更新的密码和密码确认
显示错误已发送电子邮件

电子邮件已被删除,因为他们已经拥有帐户,我想更新密码而不是创建新帐户。

我没有任何我已经覆盖的设计控制器。

enter image description here

enter image description here

enter image description here

在我发出请求后检查用户日志后,它是post request而不是放置。即使表单显示method: put

enter image description here

1 个答案:

答案 0 :(得分:1)

这就是您尝试让表单发送PUT请求的方法:html: {method: :put}

html选项为表单标记添加了可选的HTML属性,因此这里发生的是您只需将method='PUT'属性添加到表单中。

但是,在提交表单时,大多数浏览器不支持“GET”和“POST”以外的方法。

要完成这项工作,你需要一些Rails魔法。如果您以另一种方式传递method选项,而不是html选项内部,则Rails魔法将起作用:

form_for(resource, as: ..., url: ..., method: :put )

http://guides.rubyonrails.org/form_helpers.html#how-do-forms-with-patch-put-or-delete-methods-work-questionmark