レイアウトを活用しよう (3/7)
作成:2012-01-30 07:58
更新:2012-02-16 15:16
更新:2012-02-16 15:16
■ヘッダーファイルの組み込みについて
もう1つ、レイアウト用のテンプレートファイルを用意しましょう。これは、ヘッダーを表示するためのものです。レイアウトというのは、単に「全体とコンテンツの2つを組み合わせる」というだけのものばかりではありません。ページに表示されるさまざまな要素(ヘッダー、フッター、メニューなど)をうまく組み合わせることでページをレイアウトできる、それがレイアウト機能を使う利点です。
今回は、ヘッダーとして「helos.header.html.erb」というファイルを「layout」フォルダ内に作成することにします。内容は下のリスト欄に挙げておきます。1行だけの単純なものですが、まぁサンプルということで……。
ここでは、<%= @header_content %>というようにして、インスタンス変数@header_contentの内容をタイトルとして出力しています。Controller側であらかじめ変数を用意しておくことで、ヘッダーの内容が設定できるようにしよう、というわけです。
ヘッダーファイルといえども、このようにController側で用意した変数などをそのまま利用することができます。このあたりは、Viewテンプレートとまったく同じ感覚で考えてかまいません。
このヘッダーファイルをレイアウトテンプレートに読み込ませるのに、helos.html.erb側に用意したタグを思い出してみましょう。こうなっていましたね。
今回は、ヘッダーとして「helos.header.html.erb」というファイルを「layout」フォルダ内に作成することにします。内容は下のリスト欄に挙げておきます。1行だけの単純なものですが、まぁサンプルということで……。
ここでは、<%= @header_content %>というようにして、インスタンス変数@header_contentの内容をタイトルとして出力しています。Controller側であらかじめ変数を用意しておくことで、ヘッダーの内容が設定できるようにしよう、というわけです。
ヘッダーファイルといえども、このようにController側で用意した変数などをそのまま利用することができます。このあたりは、Viewテンプレートとまったく同じ感覚で考えてかまいません。
このヘッダーファイルをレイアウトテンプレートに読み込ませるのに、helos.html.erb側に用意したタグを思い出してみましょう。こうなっていましたね。
<%= render :template=>'layouts/helos.header.html.erb'%>これは、以前、ControllerでViewを使わず直接テキストを出力するのに使った「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>
※関連コンテンツ