2012-02-16 16 views
2

私のレールアプリでactive_adminを使用しています。以前は、私はdeviseのログインでカスタムページをレンダリングするのに失敗しました。問題は、active_adminログインにも失敗した場合に同じカスタムページが表示されることです。は、devise用の2つのCustomFailureリダイレクト動作を作成できません。もう1つはadmin_user用のもう1つのユーザ用です。

私はactive_adminをあきらめるために、この問題を抱えています。助けてください。

マイCustomFailure定義はここにある:

class CustomFailure < Devise::FailureApp 
    def redirect_url 
    signin_path 
    end 

    def respond 
    if http_auth? 
     http_auth 
    else 
     redirect 
    end 
    end 
end 

誰かがどのようにユーザーのサインインのパスをリダイレクト持つようにコードを変更するには失敗したとADMIN_USERのサインインが失敗を教えてもらえ。私の管理者ユーザーのサインインのパスは次のとおりです。admin_user_session_path

答えて

5

あなたはこれを解決するためにスコープを使用する必要があります: -

class CustomFailure < Devise::FailureApp 
    def redirect_url 
    if warden_options[:scope] == :user 
     signin_path 
    else 
     new_admin_user_session_path 
    end 
    end 
    def respond 
    if http_auth? 
     http_auth 
    else 
     redirect 
    end 
    end 
end 

希望、これは残念ながら、このソリューションは、私のために動作しませんでした:)

+0

は魅力的に働いた。再度、感謝します :) – abhijeetmisra

0

application_controller.rb

... 
def after_sign_in_path_for(resource_or_scope) 
    if admin_user 
    redirect_to whatever_path 
    else 
    root_path 
    end 
end 
... 

私は管理者ユーザのための正しい呼び出しを知らないかもしれないが、これは動作するはずです。

+0

に役立ちます。まだログインしていないので、私はafter_sign_in_path_forメソッドを持っていません - >私はログインページにいます。 – abhijeetmisra

関連する問題