0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】コントローラやアクション毎に切り替えることができる(layoutメソッド)

Last updated at Posted at 2020-05-05

#背景
ヘッダーやフッターなど「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

#参考
コントローラやアクション毎に使用するレイアウトを切り替える

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?