さあ、これでレイアウト関連のファイルはすべて揃いました。では、実際にこれを利用してみましょう。下に
HelosControllerクラスのindexメソッドの内容を掲載しておきました。このように記述をしてください。
表示する
Viewテンプレート(
index.html.erb)の例も挙げておきました。ここでは、
<%= @msg %>というようにしてメッセージを表示するだけのシンプルな内容にしてあります。
さあ、すべてできたら、実際に
http://localhost:3000/helos/indexにアクセスしてみてください。淡い赤を基調とするページが表示されます。ページのタイトルには「サンプルレイアウト」、ヘッダーには「コンテンツのヘッダー」、そしてコンテンツには「これはコンテンツに表示されるメッセージです。」というテキストがそれぞれ表示されるのがわかるでしょう。
ここで行なっているのは非常に単純なものです。
@title、
@header_content、
@msgの各メンバー変数にそれぞれテキストを設定しているだけです。これらはいずれもテンプレートに用意したファイル内で利用していましたね。
コードを見て「あれ? どこでテンプレートを使っているんだ?」と思った人。実は、そんな処理は必要ないのです。Railsでは、
Controller名と同じ名前のテンプレートが「
layouts」内に用意されていれば、自動的にそのレイアウトを使ってページがレンダリングされます。「
helos.html.erb」があれば、何もしなくても
heloコントローラーのアクションではすべてこのレイアウトが使われるのです。
もし、「明示的に特定のレイアウトを使ってレンダリングさせたい」という場合には、renderメソッドを利用できます。アクションメソッドの最後に、
render :layout=>"レイアウトの名前"
このようにして使用するレイアウトを指定してレンダリングをします。この
:layoutの値は、レイアウトのファイル名ではないので注意してください。例えば「
hoge.html.erb」というファイルが「
layouts」内にあったなら、
render :layout=>"hoge"と記述すれば使用できるようになります。