【发布时间】:2015-09-18 16:42:31
【问题描述】:
所以我正在尝试使用 bcrypt 在我的网站中实现 password_reset 功能。我遇到的一个问题是 POST 将转到我的新操作而不是我的创建操作。
我的观点
<%= form_for password_resets_path, method: 'post' do %>
<div>
<h3>Please enter your email address</h3>
<%= text_field_tag :email, params[:email] %>
</div>
<div>
<%= submit_tag "Reset Password" %>
</div>
我的控制器
class PasswordResetsController < ApplicationController
def new
end
def create
user = User.find_by(email: params[:email])
user.send_password_reset if user
redirect_to root_url, :notice => 'Email sent with password reset instructions.'
end
end
我的路线
resources :password_resets
我收到了这个错误
ActionController::RoutingError (No route matches [POST] "/password_resets/new"):
我已经研究过不同的解决方案,由于我没有@object 模型,因此对我不起作用。因为我只是想呼吁采取行动。
我觉得我错过了一些非常简单的东西,但对于我的生活,我一直无法弄清楚。非常感谢任何帮助我的人。
【问题讨论】:
-
不是答案,但密码重置功能不需要所有的宁静路线。我建议你做到
resources :password_resets, only: [:new, :create] -
谢谢帕万,我同意。遵循教程似乎没有必要,但我一直在遵循以确保我没有遗漏任何关键内容。
标签: ruby-on-rails railscasts password-recovery