特定のcontroller配下で指定のレイアウトを使用する方法

railsadmin配下のレイアウトはapplication.html.slimとは別のものを使用したいため、テンプレートを分けたいということがありました。

やり方

  1. 対象のcontrollerのviewをlayouts以下に作成する
  2. 特定の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が適用されます。