【Rails】renderのパーシャルファイルにデータを渡す

renderのパーシャルファイルにデータを渡す

スポンサーリンク

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
renderのパーシャルファイルにデータを渡す