Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 更新时没有与[POST]匹配的路由_Ruby On Rails - Fatal编程技术网

Ruby on rails 更新时没有与[POST]匹配的路由

Ruby on rails 更新时没有与[POST]匹配的路由,ruby-on-rails,Ruby On Rails,我认为这个问题的解决方案应该是显而易见的,但我在所有类似的问题中尝试了所有建议的解决方案,但未能解决我的问题 我有一个rails api项目,我需要为它构建一个视图。我有一个名为password_resets_controller的控制器,具有编辑和更新功能 我的“编辑”视图工作正常,只是在提交表单时出现以下错误: No route matches [POST] "/password_resets/Ho5kqU9qvuc0LTiuotOYQw" 这非常奇怪的原因是请求参数是: {"utf8"=

我认为这个问题的解决方案应该是显而易见的,但我在所有类似的问题中尝试了所有建议的解决方案,但未能解决我的问题

我有一个rails api项目,我需要为它构建一个视图。我有一个名为password_resets_controller的控制器,具有编辑和更新功能

我的“编辑”视图工作正常,只是在提交表单时出现以下错误:

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