Railsプロジェクトを作ると、app/views/layoutsというフォルダができています。
ここは、いわゆるテンプレートレイアウトのようなものを入れておくところで、コントローラと同じ名前のrhtmlを作成すると、そのコントローラで表示されるすべてのビューには、デフォルトでそのテンプレートが適用される、という仕組みになっています。
たとえば、コントローラが格納されているフォルダ(app/controllers)の中に、check_controller.rbというファイルがあったとしましょう。
その場合、layoutsフォルダの中にcheck.rhtmlというファイルを作り、そこにテンプレートレイアウトを書いておくと、check_controller.rbで実行される結果は、そのテンプレートを利用して表示される、というわけです。
たとえば、先ほどのコントローラが格納されているフォルダの中に最初から入っている、application.rbというファイルがあります。
レイアウトはこれにも対応していて、application.rhtmlというファイルを作り、そこにテンプレートレイアウトを書いておくと、すべてのコントローラから実行される結果は、このテンプレートを利用して表示される、ということになりました。
さてさて。
それならば、application.rhtmlとcheck.rhtml両方が混在していた場合はどうなるのでしょう。
この場合、check_controller.rbのものはcheck.rhtmlをテンプレートとして、
それ以外のすべてのコントローラはapplication.rhtmlをテンプレートとして動くみたいです。
今までの話をまとめるとこうなります。
個別のテンプレート.rhtml > application.rhtml > 何も設定しない
今さらながら、よくできているフレームワークだなぁ、と個人的には感心してます。

0 Responses to “テンプレートレイアウトの作り方”