back

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

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

もう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で読み込み組み込むことができるようになるでしょう。


(by. SYODA-Tuyano.)

※リストが表示されない場合

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

※helos.header.html.erbの内容

<h1><%= @header_content %></h1>



   

記事のリストに戻る



PC Site G+ mail