2012-06-18 19 views
9

私は、特定のアスペクトのデフォルトとは異なるレイアウトテンプレートを表示するようdeviseを取得しようとしています。デフォルトのレイアウトを変更する

ユーザーがログインページにアクセスしたときにこれが機能しますが、サインアップ、パスワードの忘れ、リセットのために別のレイアウトを表示する必要があります。

これは私のアプリケーションのコントローラ内の現在のコードです:あなたはあなたの自己によってレイアウトを処理する必要はありません

layout :layout 

    private 
    def layout 
    # only turn it off for login pages: 
    is_a?(Devise::SessionsController) ? "login" : "application" 
    # or turn layout off for every devise controller: 
    #devise_controller? && "application" 
    end 

答えて

25

別のレイアウトにdevise.html.erbという名前を付けると、宝石のコントローラは尋ねることなく自然にそれを使用します。いくつかのコードを保存します。

+0

これを実現するためのすべての方法を示すドキュメントは次のとおりです:https://github.com/plataformatec/devise/wiki/How-To:- Create-custom-layouts – akz92

3

、ちょうど行います

rails generate devise:views 

その後、工夫フォルダを見てビューフォルダには、カスタマイズする必要があるすべてのフォームが表示されます。

+0

私はアプリケーションテンプレートを使用していますが、ユーザーがログインするまで表示したくない情報があります。そのようなビューはありません。そのレイアウトは、それらのビューが –

+0

私はレイアウトに触れる必要はありませんでした。私がしたのはすべてレールを作成することでした:ビュー、次に、生成されたビューを簡単にカスタマイズしました。 – simo

30

このコードをアプリケーションに追加してください。

01あなたはこの article

を読むことができます詳細については

config.to_prepare do 
    Devise::SessionsController.layout "your_layout_name" 
    Devise::RegistrationsController.layout proc{ |controller| user_signed_in? ? "application" : "your_layout_name" } 
    Devise::ConfirmationsController.layout "your_layout_name" 
    Devise::UnlocksController.layout "your_layout_name"    
    Devise::PasswordsController.layout "your_layout_name"   
end 

:あなたはすべてのために同じレイアウトは、ユーザーがデータを編集しているときを除いて、ビューを工夫したい場合

config.to_prepare do 
    Devise::SessionsController.layout "your_layout_name" 
    Devise::RegistrationsController.layout "your_layout_name" 
    Devise::ConfirmationsController.layout "your_layout_name" 
    Devise::UnlocksController.layout "your_layout_name" 
    Devise::PasswordsController.layout "your_layout_name" 
end 

は、あなたがこのような何かを持っている可能性があり

+0

上記のコードでのみ問題が発生しました。有効なログインユーザーがそのパスワードを編集したときの効果 –

+0

私の回答 – zolter

+0

が更新されました。それはトリック、感謝zolterを行う可能性があります:) –

関連する問題