#部分テンプレートとは
部分テンプレートはenderメソッドを使うことで指定でき、重複するHTMLの記述部分を文字通りテンプレ化する事で、共通化して綺麗にまとめる事が出来ます。
部分テンプレートを上手く使えば、コードを綺麗にまとめる事が出来るのは勿論のこと、修正するときも楽になりますし、コードを描くにあたって必須になってきますので、今のうちに基礎を抑えておきましょう。
##部分テンプレート内で変数を使う
まず、partialで部分テンプレートのファイルを指定します。この時ディレクトリの位置と、ファイル名に注意してください(※部分テンプレートのファイル名は_から始めます)。
例えば、tweets/index.html.haml内で、shared/_item.html.hamlを指定したいときは、このように書きます。
= render partial: 'shared/item', locals: {items:@items, word: 'レディース' }
大抵の場合controllerで指定したインスタンス変数を部分テンプレート先で使用したい事が多いです。
この時、localsを使用します。
= render partial: 'item', locals: { '指定先で使いたい変数名':'持っていく変数名' }
partialは省略することも可能ですが、上記のように変数を指定するときは省略は出来ません。
##部分テンプレート内でeach処理をする
each文で、@itemsを一つずつ取り出したいとき、部分テンプレート先でeach文を使うことももちろん出来ますが、collectionオプションを使って複数形の変数を渡すと、部分テンプレート先でeach文を使用せずに繰り返し処理をしてくれるので便利です。
更に、@itemsを、_item.html.haml内で、itemとして繰り返し処理したい時にpartialもcollectioinも省略して、render @itemsだけにする事ができます。
つまり、
- @items.each do |item|
= render partial: 'item', locals: { item: item }
⬆️これを
= render partial: 'item', collection: @items
⬆︎こうして
= render @items
こうできます!
だいぶスッキリしましたね〜!