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 %>

这应该适合你。