概要
Viewでの繰り返し部分を、eachメソッドを使用するのではなく、コレクションをレンダリングすることで実装する。
Version
Ruby: 2.3.1
Rails: 5.0.1
コード
views/xxx.html.erb
<% @users.each do |user| %>
<ul class="lists">
<li class="list">#{user.name}</li>
</ul>
<% end %>
上記は以下に書き換え可能
views/yyy.html.erb
<ul class="lists">
<%= render partial: "user", collection: @users %>
</ul>
_user.html.erb
<li class="list">#{user.name}</li>
POINT
・ Partial内の変数名、Partialの値、Collectionの値の関係性に注意
パーシャルはデータの繰り返し (コレクション) を出力する場合にもきわめて便利です。:collectionオプションを使用してパーシャルにコレクションを渡すと、コレクションのメンバごとにパーシャルがレンダリングされて挿入されます。
(中略)
パーシャルを呼び出す時に指定するコレクションが複数形の場合、パーシャルの個別のインスタンスから、出力するコレクションの個別のメンバにアクセスが行われます。このとき、パーシャル名に基づいた名前を持つ変数が使用されます。(Railsガイド)。
→コレクションの数だけパーシャルが挿入される。
→変数名 = パーシャル名。
初めてこの方法を使用した際に、変数名とパーシャル名を一致させておらずハマったのでメモ。