特定のcontroller配下で指定のレイアウトを使用する方法
railsでadmin
配下のレイアウトはapplication.html.slim
とは別のものを使用したいため、テンプレートを分けたいということがありました。
やり方
- 対象のcontrollerのviewを
layouts
以下に作成する - 特定のcontrollerの配下で使用するため、layoutsを指定するようにする
まずは対象となるadmin controllerのlayoutsを変更します。
layouts/admin.html.slim
doctype html html head title | Hoge = stylesheet_link_tag 'pc/application', media: 'all', 'data-turbolinks-track' => true = javascript_include_tag 'application', 'data-turbolinks-track' => true = yield :javascript = csrf_meta_tags body = render "header" .l__admin_container = render "admin/sidebar" = yield
このように、admin専用のlayoutsを作成します。
これでadimin controllerでは呼ばれるようになります。
ただし、adminを継承したcontrollerには適用されません。
そこで、継承で使用できるようにlayout
を指定してあげます。
class AdminController < ApplicationController layout 'admin' end
これでAdminController
を継承したcontrollerはlayoutのテンプレートがlayouts/admin.html.slim
が適用されます。