appication.html.erbは全ページに反映される
まあそういう機能なんですが、application.html.erbに書いたものは全てのページに反映されます。
例えば自分だと、ユーザーがアクションを起こすようのフッター(投稿画面や検索画面、お気に入りリストページなどへの遷移)をapplicationに書いていたのですが、これはログイン画面にはいらない。。。
備忘録のために、メモります。
元ネタ
元ネタはこちらのgithubになります。
How To: Create custom layouts
やり方が3つ紹介されていますが、自分は一番下のApplication / Devise Configというものを採用しました。
さらにその中にも3つあるのですが、自分はその中で真ん中のやり方を利用しています。
具体的な実装
config.applicationに下記コードを書きます。
上の元ネタにもありますが、自分がapplication.html.erbを適用したいものはlayout "devise"とする。
適用したくないものにはlayout proc{ |controller| user_signed_in? ? "application" : "devise" }と表記する。
config.to_prepare do
Devise::SessionsController.layout proc{ |controller| user_signed_in? ? "application" : "devise" }
Devise::RegistrationsController.layout proc{ |controller| user_signed_in? ? "application" : "devise" }
Devise::ConfirmationsController.layout "devise"
Devise::UnlocksController.layout "devise"
Devise::PasswordsController.layout "devise"
end
特定のページが自分のどこのコントローラーに属するかは、自分のエディタを見ればわかります。
devise以下にあるエディタリストで当てはまるものを探せばokです。