设计edit_account_password操作会将我重定向到根目录

时间:2011-05-12 13:52:07

标签: ruby-on-rails devise

以下是我的设计路线:

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。请帮助我理解为什么或者我会伤害自己。谢谢。

2 个答案:

答案 0 :(得分:11)

好的,我发现了问题。编辑密码来自Recoverable模块,它的目的是帮助用户忘记密码,而不是签名用户更改他/她的密码。您可以改为使用注册/编辑。

答案 1 :(得分:0)

在用户通过上述路由更改密码操作更改密码后,我不确定您是否在谈论行为。如果您是,请考虑这个问题和答案,它可以回答您的问题,也可以让您了解您可能遇到的问题:

Devise logging out automatically after password change