2012-01-10 5 views
11

をオーバーライドすることはできません。既定では、Deviseは電子メールを入力した後にサインインフォームをレンダリングします。は、私は私は私がパスワードのリセット手順を送信する電子メールを送信した後、ホームページにリダイレクトするために私のRailsアプリが必要工夫パスワードコントローラ

だから私はDevise::PasswordsControllerを無効にし、そのredirect_toを変更しようとしているが、ない成功を収めています。実際に、私はRailsが私のクラスに入っているとは思わない。それは非常にばかげたミスかもしれないが、私は半日も成功していない。

私はhereからパスワードコントローラを無効にするためにアイデアを取りました。

class PasswordsController < Devise::PasswordsController 
    protected 
    def after_sending_reset_password_instructions_path_for(resource_name) 
    root_url 
    end 
end 

routes.rbを:ここで

は私のコントローラだ

devise_for :users, :controllers => {:passwords => "passwords"} 
devise_for :users, :controllers => {:registrations => "registrations"} 
devise_for :users, :controllers => {:sessions => "sessions"} 

私は同じアプリで工夫のRegistationsとセッションコントローラをオーバーライドしており、それらが動作するように見えることに言及したいと思います良い。

+0

あなたはどのような工夫バージョンを使用していますか? –

+0

私はdevise 1.5.3を使用しています – abhijeetmisra

答えて

12

工夫(2.1.2)の最新バージョンで、コントローラを無効にすることが可能です。

class PasswordsController < Devise::PasswordsController 
    def new 
    super 
    end 

    def create 
    ..override method here.. 
    end 
end 

そしてconfig/routes.rb

は:Railsが派生 PasswordsController代わりに、元の1つを使用する場合は、 rake routesに確認することができます

devise_for :users, controllers: { passwords: 'passwords', .. } 

、ルートは、例えばpasswords#newの代わりdevise/passwords#new含まれている必要があります。

3

私はあなたがルートで変更を言及するのを忘れてしまったと思う:

devise_for :users, :controllers => {:sessions => "sessions", :passwords => "passwords"} 
関連する問題