Rails5 のレイアウト指定をコントローラ単位で行う(自動)
Ruby Ruby on Rails
Published: 2019-06-03

やったこと

Rails5 のレイアウトをコントローラ単位で適用する方法について調べました。

今回はコントローラに明示的に設定せずに、適用する方法を試します。

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

$ rails --version
Rails 5.2.3

調査

app/views/layouts/tasks.html.erb

<!DOCTYPE html>
<html>
  <head>
    <title>Task-Sample2</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <p>Taskのレイアウト<p>
    <%= yield %>
  </body>
</html>

下記のようなコントローラがあるとします。

app/controllers/tasks_controller.rb

class TasksController < ApplicationController

  def new
  end
end

コントローラ側では特に指定しなくても、レイアウトが切り替わります。

参考