2016-08-06 4 views
0

RailsアプリケーションでDevise gemをユーザー認証に使用しています。私はsign_outヘルパーメソッドがSafariでデスクトップとモバイルの両方で動作していないことが判明しました。Chromeなどでうまく動作します。Rails/Devise - Safariでsign_outが機能しない

特定のコントローラにヒットしたときにサインインしたユーザーを強制的にログアウトさせようとしていますアクション:

def new 
    if user_signed_in? 
     sign_out 
    end 
end 

しかし、これは効果がありません。

<% if user_signed_in? %> 
    <%= link_to('Logout', destroy_user_session_path, :method => :delete) %> 
<% end %> 

ではなく、コントローラからsign_outを呼び出すなどのビューで、[OK] user_signed_in?destroy_user_session_path機能の仕事は、無行くではありません。

誰かがこのような種類のブラウザ間の問題をDeviseで経験したことがありますか?これを修正したり、同じ機能を実現できる方法はありますか?

答えて

0

のconfig/application.rbで行くと

match '/logout' => 'devise/sessions#destroy', :via => [:delete] 

をroutes.rbをするために追加true

config.serve_static_assets = true 

それとも

serve_static_assetsを設定し、符号アウトのためのあなたのリンクは次のようにする必要がありますこの

<%= link_to 'Sign Out', logout_path %> 
それが動作しない場合

、このよう工夫:: SessionsControllerをオーバーライドしてみてください。

class SessionsController < Devise::SessionsController 
def log_out 
    user = current_user 
    sign_out user 
end 
end 
+0

これは、生産に使用すべきではないので、有効な解決策そうではありません。 –

+0

私の解決策を更新しました:) –

+0

@BorisBresciani申し訳ありませんが、これは動作していないようです... 'if user signed_in?'ブロックは、別のコントローラでうまく動作します...なぜそれがちょうどこの1つのインスタンス? – skwidbreth

関連する問題