2016-12-26 8 views
0

質問:ユーザーがログオフするたびにオーバーライドされたafter_sign_out_forメソッドが呼び出されるようにするにはどうすればよいですか?このメソッドをオーバーライドして、特定のページにリダイレクトできるようにします。Ruby on Rails 5とDevise:after_sign_out_path_forをオーバーライド

ユーザがログアウトすると(セッションコントローラでdestroyメソッドを呼び出す)、私がオーバーロードした私のafter_sign_out_path_forメソッドは呼び出されません。しかし、私は今、数時間のために、この問題を解決しようとしてきたが、この https://github.com/plataformatec/devise/wiki/How-To:-Change-the-redirect-path-after-destroying-a-session-i.e.-signing-outリンクが私のために動作しませんでしたafter_sign_in_path_for方法

とのトラブルを持っていませんよ。私はまた、話題のほとんどのSO投稿を見て、いくつかの相反する見方を見た。私は無駄に自分のアプリケーションとセッションコントローラの両方に次のコードを入れて試してみました

def destroy 
    super 
end 

:ここ

は、コントローラのメソッドです。

protected 

    def store_location_for(resource_or_scope, location) 
    return nil 
    end 
    def stored_location_for(resource_or_scope) 
    return nil 
    end 

    def after_sign_out_path_for(resource_or_scope) 
    puts "called from AFTER SIGN OUT PATH" 
    new_user_session_path 
    end 

これは私のルートで

devise_for :users, controllers: { sessions: "users/sessions" } 

コードの関連部分です最後に、これは、コントローラのメソッド呼び出し、ビューのコードである:あなたの時間

ため

<%= link_to 'Sign out', destroy_user_session_path(:user), :method => :delete %> 

感謝を

答えて

0

私は、私が見た他のいずれの投稿にも言及されていない答えを見つけました。 sign_out_and_redirect(current_user)に電話して、破壊からスーパーへの呼び出しを削除する

このメソッドは、after_sign_out_path_for(resource_or_scope)