テンプレートを作っていくうちに「ここは複数の箇所で使い回しできるなあ」と思う場面があります。
ここではそのような場面に遭遇した時の説明をしたいと思います。
renderメソッド
viewテンプレート内では
renderメソッドを使用することができます。
このrenderメソッドを使用することで、部分テンプレート(パーシャルともいう)の読み込みを行うことができます。
以下簡単な例になります。
# 使い回したい検索フォームコード
<p>一覧画面</p>
<%= render 'form', task: @task %>
フォームを定義したファイルをindexのテンプレートから呼び出しています。
render 'form'
のように記述すると、ファイル名が「_ 」で始まるテンプレートファイルから探索します。
formと記述しているが、実際に探索するテンプレートファイル名は'_form'となります。
layoutテンプレート
layoutテンプレートとは特定の構造をコンポーネントとして共通化する以外に、headタグやよくあるヘッダーやフッターの共通であるのが一般的になります。
そういった「外側」のレイアウトをテンプレートとして扱う仕組みもあります。
以下簡単な例になります。
# テンプレートしたいコード
<body>
<%= yield %>
</body>
このようにすることでyieldの部分にテンプレート化したいコンテンツが展開されるようになりました。