Rails で多段レイアウト


Rails でレイアウトファイルを入れ子にする方法です。

大枠のレイアウトがあり、URLによってその中のレイアウトをある程度決定したい場合に使えます。 例えば、 Adminページではページ下部にXXを表示するといったように。

環境

次の環境で試しました。

  • Rails 3, 4

方法

標準では、app/views/layouts/application.html.erb がレイアウトファイルになっています。 今回その中に表示したいレイアウトファイルとして、 app/views/layouts/sub_application.html.haml を作成するものとします。 最近あったプロジェクトでは、 app/views/something/layouts/application.html.haml というレイアウトファイルを作ったりしました。

Ruby のバージョンによっては、 render :templates =>'layouts/application' と書くこともあります。

ここでは、 :content を定義しています。 そして、 layouts/application で、 定義した :content を表示するようにします。

このようにして、 :content が定義されている場合には :content を、 そうでない場合にはこれまでどおり yield で表示をするようにします。