#背景
ヘッダーやフッターなど「app/views/layouts/application.html.erb」のyield
のよってレイアウトの共通化をしている。
今回、コントローラやアクション毎にレイアウトを切り替えることができることを知り、今後使うことがあると思い残すこととした。
#使い方
1.コントローラ毎に使用するレイアウトを自動設定する方法.
app/views/layouts/コントローラ名.html.erb
このように、レイアウトファイルを作成することで、コントローラ単位でのレイアウトを切り替えが可能になる。
2.複数のコントローラからファイル指定してレイアウトを設定する方法
① app/views/layouts/レイアウト名.html.erb
作成。
② Cnotroller内でlayoutメソッド
で呼び出す。
Cnotroller.rb
class コントローラー名 < ApplicationController
layout 'レイアウト名' except: [:アクション] #onlyやexceptオプションで指定することも可能
def アクション
end
end
3.アクション毎に適用するレイアウトファイルを切り替える方法
Cnotroller.rb
class コントローラー名 < ApplicationController
def アクション
render layout: 'レイアウトファイル名`
end
end
4.レイアウトを無効にする方法
Cnotroller.rb
#コントローラ毎にレイアウトを無効にする場合
class コントローラー名 < ApplicationController
layout false
def アクション
end
end
#アクション毎にレイアウトを無効にする場合
class コントローラー名 < ApplicationController
def アクション
render layout: false
end
end