プログラミングノート

一からものを作ることが好きなエンジニアの開発ブログです。

Layoutの全て

久々にRailsでもやってみようかと思ったら、以前からかなり時間が経っててすっかり抜けてしまっている状態。。ショックを受けつつも仕方がないのでもう一回やり直すことに。


今回はRailscastより#7 All About Layouts。何回も見るのも時間の無駄なので要点をメモ。結構前のものなので情報が古いかもしれないけど、一応2.0.2で動作したので問題ないはず。


以下レイアウトの種類で、後のものが優先される。
layoutファイルに <%= yield %> と書けば、その部分にViewが出力される。

グローバル

後述のレイアウトが未定義の全ての画面に適応される。

  • layouts/application.rhtml

コントローラ

コントローラ毎にレイアウトを適応できる。

  • layouts/コントローラ名.rhtml

指定

コントローラクラスで指定。

  • layouts/任意の名前.rhtml
class XXXController < ApplicationController
  layout "admin"

動的に切替

コントローラクラスで指定。

  • layouts/任意の名前.rhtml
class XXXController < ApplicationController
  layout :user_layout
	
  protected
    def user_layout
      if current_user.admin?
        "admin"
      else
        "user"
      end
    end

メソッド

メソッド単位で指定。

  • layouts/任意の名前.rhtml
render :layout => 'admin'

layout => false とするとレイアウトが適応されない。