libro
www.tuyano.com
初心者のためのRuby on Rails3入門

レイアウトを活用しよう (3/7)

作成:2012-01-30 07:58
更新:2012-02-16 15:16

■ヘッダーファイルの組み込みについて

もう1つ、レイアウト用のテンプレートファイルを用意しましょう。これは、ヘッダーを表示するためのものです。レイアウトというのは、単に「全体とコンテンツの2つを組み合わせる」というだけのものばかりではありません。ページに表示されるさまざまな要素(ヘッダー、フッター、メニューなど)をうまく組み合わせることでページをレイアウトできる、それがレイアウト機能を使う利点です。

今回は、ヘッダーとして「helos.header.html.erb」というファイルを「layout」フォルダ内に作成することにします。内容は下のリスト欄に挙げておきます。1行だけの単純なものですが、まぁサンプルということで……。

ここでは、<%= @header_content %>というようにして、インスタンス変数@header_contentの内容をタイトルとして出力しています。Controller側であらかじめ変数を用意しておくことで、ヘッダーの内容が設定できるようにしよう、というわけです。

ヘッダーファイルといえども、このようにController側で用意した変数などをそのまま利用することができます。このあたりは、Viewテンプレートとまったく同じ感覚で考えてかまいません。

このヘッダーファイルをレイアウトテンプレートに読み込ませるのに、helos.html.erb側に用意したタグを思い出してみましょう。こうなっていましたね。
<%= render :template=>'layouts/helos.header.html.erb'%>
これは、以前、ControllerViewを使わず直接テキストを出力するのに使った「render」メソッドを使っているのです。これは整理すると以下のような書き方になります。
render :template=>"読み込むテンプレートファイルのパス"
テンプレートファイルのパスは、「views」フォルダからの相対パスで記述すればOKです。ここでは「layout」フォルダ内のhelos.header.html.erbを指定していますね。こうすることで、作成したヘッダーファイルの内容がここに書き出されるわけです。――理屈がわかれば、ヘッダーだけでなく、ページ最後に表示するフッターや、横に表示するメニューなど、さまざまな部品をrenderで読み込み組み込むことができるようになるでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※helos.header.html.erbの内容

<h1><%= @header_content %></h1>
※関連コンテンツ

「初心者のためのRuby on Rails3入門」に戻る