POST 会去 'new' 而不是 'create' Rails
POST is going to 'new' and not 'create' Rails
所以我正在尝试使用 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 对我不起作用。因为我只是想呼吁采取行动。
我觉得我错过了一些非常简单的东西,但我一生都无法弄明白。非常感谢能帮助我的人。
问题:<%= form_for password_resets_path, method: 'post' do %>
form_for
needs an object. If you don't want an object, just use the form_tag
帮手:
<%= form_tag password_resets_path do %>
<%= text_field_tag :email, params[:email], placeholder: "Please enter your email address" %>
<%= submit_tag "Reset Password" %>
<% end %>
这应该适合你。
所以我正在尝试使用 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 对我不起作用。因为我只是想呼吁采取行动。
我觉得我错过了一些非常简单的东西,但我一生都无法弄明白。非常感谢能帮助我的人。
问题:<%= form_for password_resets_path, method: 'post' do %>
form_for
needs an object. If you don't want an object, just use the form_tag
帮手:
<%= form_tag password_resets_path do %>
<%= text_field_tag :email, params[:email], placeholder: "Please enter your email address" %>
<%= submit_tag "Reset Password" %>
<% end %>
这应该适合你。