我正在使用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]”)来解决问题?
答案 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已经提供了这个。