Rails中的“无法找到映射”错误(使用Devise Gem时)?

时间:2015-06-05 17:10:42

标签: ruby-on-rails ruby devise

我正在使用Devise来验证用户身份。我正在尝试使用表单/更新方法来更新密码。表单生成正确,它也会选择路径。但是,我收到以下错误:

“无法找到路径”/ users / updatepw“的设计映射。这可能有两个原因:1)您忘记将路由包装在范围块内。例如:devise_scope:user do get”/ some / route“=>”some_devise_controller“end 2”你正在测试绕过路由器的Devise控制器。如果是这样,你可以明确告诉Devise使用哪个映射:@ request.env [“devise.mapping”] = Devise.mappings [ :用户]“

第一个选项似乎不是原因,这是我的routes.rb:

devise_scope :users do
  ...
  post "/users/updatepw", to: "users/registrations#update_password", as :update_pw
  ...  
end
...
resources :users #I don't know if this is needed considering the devise block, but commenting it out doesn't fix the problem..

所以包裹。

至于第二种选择......我真的不明白......我不是想测试任何东西......?

我的问题实际上是双重的: 1)考虑到我没有尝试进行任何测试,错误意味着什么? 2)我在哪里放置修正线(“@ request.env [”devise.mapping“] = Devise.mappings [:user]”)来解决问题?

1 个答案:

答案 0 :(得分:0)

我认为您错过了表单中的<%= form_for(resource, as: resource_name, ...选项。请参阅设计密码编辑

<p class="input-group"> <input type="text" class="form-control date" id="startDate" placeholder="Start Date" ng-click="date.startDate=true" datepicker-popup="MM/dd/yyyy" ng-model="date.start" is-open="date.startDate" date-disabled="disabled(date, mode)" ng-required="true" close-text="Close"> <span class="input-group-btn"> <button type="button" class="btn btn-default" ng-click="date.startDate=true" is-open="date.startDate"><i class="glyphicon glyphicon-calendar"></i></button> </span> </p>

https://github.com/plataformatec/devise/blob/master/app/views/devise/passwords/edit.html.erb#L3

问题:为什么要创建自己的更新密码? Devise已经提供了这个。