22

特定の側面のデフォルトとは異なるレイアウトテンプレートを表示するように工夫しようとしています。

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

これは、私のアプリケーション コントローラーの現在のコードです。

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
4

3 に答える 3

64

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

于 2013-08-08T18:42:23.353 に答える
44

次のコード行を application.rb に追加します。

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

ユーザーがデータを編集しているときを除いて、すべての Devise ビューで同じレイアウトが必要な場合は、次のようにすることができます。

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

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

于 2012-06-18T15:10:42.503 に答える
1

自分でレイアウトを処理する必要はありません。

rails generate devise:views

次に、views フォルダーの devise フォルダーを見ると、カスタマイズする必要があるすべてのフォームが表示されます。

于 2012-06-18T12:23:20.197 に答える