Ruby on rails 更新时没有与[POST]匹配的路由
我认为这个问题的解决方案应该是显而易见的,但我在所有类似的问题中尝试了所有建议的解决方案,但未能解决我的问题 我有一个rails api项目,我需要为它构建一个视图。我有一个名为password_resets_controller的控制器,具有编辑和更新功能 我的“编辑”视图工作正常,只是在提交表单时出现以下错误:Ruby on rails 更新时没有与[POST]匹配的路由,ruby-on-rails,Ruby On Rails,我认为这个问题的解决方案应该是显而易见的,但我在所有类似的问题中尝试了所有建议的解决方案,但未能解决我的问题 我有一个rails api项目,我需要为它构建一个视图。我有一个名为password_resets_controller的控制器,具有编辑和更新功能 我的“编辑”视图工作正常,只是在提交表单时出现以下错误: No route matches [POST] "/password_resets/Ho5kqU9qvuc0LTiuotOYQw" 这非常奇怪的原因是请求参数是: {"utf8"=
No route matches [POST] "/password_resets/Ho5kqU9qvuc0LTiuotOYQw"
这非常奇怪的原因是请求参数是:
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"WksU8TIWTJ2+WmqpKTiaaETWLD9hhFP1pzxQJAU73g51Cij6GTL0PZbLf8BuJI2l1HqHuNhOZwMs+qSVQxiPtQ==",
"email"=>"whatever@example.com",
"user"=>{"password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"},
"commit"=>"Update password"}
这表明该方法是patch或put ok,而不是post
视图文件中的相关部分是:
<%= form_for(@user, url: password_reset_path(params[:id]), method: :put) do |f| %>
<%= hidden_field_tag :email, @user.email %>
<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>
<%= f.label :password_confirmation, "Confirmation" %>
<%= f.password_field :password_confirmation, class: 'form-control' %>
<%= f.submit "Update password", class: "btn btn-primary" %>
<% end %>
发布时转储的路由显示路径是正确的(这是从表中复制粘贴的,请原谅扭曲的结果):
密码重置路径修补程序/密码重置/:id(:格式)密码重置#更新 PUT/password_resets/:id(:format)password_resets#update 在控制器中,我的功能正常
def update
end
我只是想让代码达到这个功能,但我在表单提交卡住了。起初,我的表单没有:方法
。但是,添加它并没有使表单起作用。
我可能做错了什么?在您的代码示例中,您有:
多个重置是否不正确
在您的代码示例中,您有:
多个重置是否不正确
您是否尝试设置方法::修补程序
?是的,不幸的是,同样的错误传递@user。隐藏字段上的电子邮件
看起来不正确(任何人都可以修改该字段!我不确定您使用该字段的目的,但不要让用户更改该字段)。您是在使用某种gem进行用户身份验证(如Desive)还是自定义密码重置实现?您是否尝试设置method::patch
?是的,同样的错误是不幸地通过@user。隐藏字段上的电子邮件
看起来不正确(任何人都可以修改它!我不知道你使用该字段的目的是什么,但不要让用户更改该字段)。你是使用一些gem进行用户身份验证(如Desive)还是自定义密码重置实现?就是这样,不敢相信我没有看到它,非常感谢这节省了我这么多时间!:)就是这样,真不敢相信我没看到,多谢,这节省了我这么多时间!:)
def update
end