RailsのViewでは、繰り返し出現するHTMLは使い回しができるようにパーシャルファイルとして別ファイルにすることができます。
_post.html.erb
<article class="post">
<header class="post-title">...</header>
<div class="post-body">...</div>
<footer class="post-footer">...</footer>
</article>
パーシャルファイルの読み込みはViewの render
メソッドで呼び出します。
= render partial: 'post'
データを渡すためのlocalsオプション
多くの場合、パーシャルファイルは様々なViewから呼び出されるので、呼び出し元からデータを渡せば柔軟なパーツにすることができます。
そこでデータを渡すには、 render
メソッドの locals
オプションを利用します。
= render partial: 'post', locals: { posts: @posts }
locals
オプションにはオブジェクトを渡します。
オブジェクトのキー名がパーシャル内で参照できる値になります。
<article class="post">
<header class="post-title"><%= @post.title %></header>
<div class="post-body"><%= @post.content %></div>
<footer class="post-footer"><%= @post.meta %></footer>
</article>
ちなみにlocals
オプションだけ指定する場合、次のように省略形で記述することも可能です。
= render "article", post: @post