通过重置 - 没有路线匹配 [PATCH] "/password_resets.SOLceKJXoax55zSBAfAhTQ"

Posted

技术标签:

【中文标题】通过重置 - 没有路线匹配 [PATCH] "/password_resets.SOLceKJXoax55zSBAfAhTQ"【英文标题】:Pass Reset - No route matches [PATCH] "/password_resets.SOLceKJXoax55zSBAfAhTQ" 【发布时间】:2015-12-31 07:18:55 【问题描述】:

我正在学习 Michael Hartl rails 教程并尝试实现密码重置功能,但发送密码重置表单(重置密码的表单)的请求看起来像 /password_resets.SOLceKJXoax55zSBAfAhTQ,然后 rails 说:否路线匹配 [PATCH] "/password_resets.SOLceKJXoax55zSBAfAhTQ" 在本教程中,我们被要求使用此路线:资源:password_resets,仅:[:new,:create,:edit,:update] 但我收到了错误消息。

这就是我的 password_resets_controller.rb 更新方法的样子:

定义更新 如果密码空白? flash.now[:danger] = "密码不能为空" 渲染“编辑” elsif @user.update_attributes(user_params) 登录@用户 flash[:success] = "密码已被重置。" 重定向到@用户 别的 渲染“编辑” 结尾 结尾

知道我的方法或路线是如何导致该错误的吗? 提前谢谢你。

更新: 添加我的重置密码视图 (password_resets\edit.html.erb)

 <% provide(:title, 'Reset Password') %>
 <h1>Reset Password</h1>

 <div class="row">
 <div class="col-md-6 col-md-offset-3">
 <%= form_for(@user, url: password_resets_path(params[:id])) do |f| %>
 <%= render 'shared/error_messages' %>
 <%= hidden_field_tag :uemail, @user.uemail %>

 <%= 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 %>
</div>
</div>

【问题讨论】:

您的某处可能有错字,应该是/password_resets/SOLceKJXoax55zSBAfAhTQ。能贴出呈现表单的视图代码吗? 请告诉我们路线,password_reset_path(params[:id]) 可能适合你 【参考方案1】:

改变这个:

<%= form_for(@user, url: password_resets_path(params[:id])) do |f| %>

到这里:

<%= form_for(@user, url: password_reset_path(params[:id])) do |f| %>

【讨论】:

就是这样。我不敢相信这种愚蠢的类型是导致数小时环顾路线和代码其他部分的原因。非常感谢。

以上是关于通过重置 - 没有路线匹配 [PATCH] "/password_resets.SOLceKJXoax55zSBAfAhTQ"的主要内容,如果未能解决你的问题,请参考以下文章

[地图Map] 百度地图api 自定义路线的道路匹配问题

Django密码重置没有反向匹配

Rails 3.2.13 - 没有路线匹配 [GET] "/js/jquery.fancybox.js"

Django:密码重置时没有反向匹配[重复]

rails 6中没有针对多个路线参数的路线匹配

没有路线匹配错误