以下是我的设计路线:
devise_for :accounts, :path_names => { :sign_up => "new" } do
get "sign_in", :to => "devise/sessions#new"
get "sign_out", :to => "devise/sessions#destroy"
get "/change_password", :to => "devise/passwords#edit"
end
我rake routes
的输出:
account_password POST /accounts/password(.:format) {:controller=>"devise/passwords", :action=>"create"}
new_account_password GET /accounts/password/new(.:format) {:controller=>"devise/passwords", :action=>"new"}
edit_account_password GET /accounts/password/edit(.:format) {:controller=>"devise/passwords", :action=>"edit"}
PUT /accounts/password(.:format) {:controller=>"devise/passwords", :action=>"update"}
所以change_password路由不到位,/change_password
只是将我重定向到root_path。请帮助我理解为什么或者我会伤害自己。谢谢。
答案 0 :(得分:11)
好的,我发现了问题。编辑密码来自Recoverable模块,它的目的是帮助用户忘记密码,而不是签名用户更改他/她的密码。您可以改为使用注册/编辑。
答案 1 :(得分:0)
在用户通过上述路由更改密码操作更改密码后,我不确定您是否在谈论行为。如果您是,请考虑这个问题和答案,它可以回答您的问题,也可以让您了解您可能遇到的问题: