1

RoRアプリケーションが提供するサービスを使用するには、すべての新規ユーザーがEULAに同意する必要があるため、ユーザーが初めて私のWebサイトにログインするときに、EULAに同意する必要があります。受け入れたくない場合は、ログアウトするだけなので、次のようになります。

私にはアクションがありbefore_filterます:ApplicationController:except

before_filter :check_eula, :except => [:destroy]

そして私のEULAページにリンクがあります:

<%= link_to('Logout', destroy_user_session_path, :method => :delete, :class => link_class) %>

そして私はDeviseを使用しています: https ://github.com/plataformatec/devise/blob/master/lib/devise/rails/routes.rb

destroy_user_session DELETE /users/sign_out                   {:controller=>"devise/sessions", :action=>"destroy"}

問題は:check_eula、ユーザーがEULAに同意せずに[ログアウト]リンクをクリックしたときに、まだ呼び出されているように見えることです。

4

1 に答える 1

3

以下が機能する理由はわかりませんが、解決策は次のとおりです。

config/application.rb

config.to_prepare do
  # ...

  Devise::SessionsController.skip_before_filter :check_eula, :only => [:destroy]
end

参照:

DeviseのSessionsControllerのbefore_filterをスキップするには?

于 2013-02-25T22:53:27.740 に答える