部分テンプレート (partial) を使いたい。
Rails では render :partial => "template_name"
で部分テンプレートを利用できますが、
Middleman でも同様に部分テンプレート機能が使えます。
ただし、Middleman の場合は以下の方法で部分テンプレートを呼び出します。
(以下、ビューのファイル形式は HAML で説明します。)
呼び出し元
partial
メソッドでテンプレートを描画する。
(Rials の場合と同様に) 引数にテンプレートのファイル名を指定する。
.mami-tomoe
= partial :tiro
呼び出し先 (部分テンプレート)
(Rials の場合と同様に) ファイル名の先頭にアンダースコアを付与する。
- 5.times do
.special= "ティロ・フィナーレ!"
部分テンプレートに引数を渡したい。
これまた Rails の部分テンプレートと同様に、部分テンプレートに引数を渡せます。
:locals
というオプションに任意の key, value を渡します。
.mami-tomoe
= partial :tiro, locals: { type: "デュエット" }
- 5.times do
.special= "ティロ・#{type}!"
上記の例の場合、type
を必ず指定しなければいけません。
指定しなかった場合は、変数 type
を呼び出す際に NameError
となります。
引数を省略した場合はデフォルト値を入れたい。
前述の例に locals
で渡す値を増やしました。
.mami-tomoe
= partial :tiro, locals: { type: "デュエット", length: 3 }
- length.times do
.special= "ティロ・#{type}!"
ただし、上記の例で毎回 length
を指定するのは面倒だなぁ…。
指定しない場合はデフォルト値を入れたい。でも渡さないと NameError
が…。
そのような時に役立つのが、部分テンプレート内での locals
です。
.mami-tomoe
= partial :tiro, locals: { type: "デュエット" }
- legnth = locals[:length] || 5
- length.times do
.special= "ティロ・#{type}!"
動いた! ✌('ω'✌ )三✌( 'ω' )✌三( ✌'ω')✌