collection オプションは指定したインスタンス変数の中にある要素の数だけ、部分テンプレートを呼びだすことができる。
collectionを使えば繰り返し表示させたい要素がインスタンス変数に複数入っている場合でもeach
メソッドを使わずrender
で繰り返し表示できる。
collectionを使う場合
<%= render partial: 'hoge', collection: @hoges %>
collectionを使用する際は、複数要素が入っているインスタンス変数を、collectionオプションの対象に指定する。部分テンプレート内では、インスタンス変数から取り出した要素を、部分テンプレート名と同じ変数名で扱うことができます。
つまり、_hoge.html.erb内において、@hogesから取り出された1つ1つの要素はhogeとして扱うことができます。
eachを使う場合
<% @hoges.each do |hoge|%>
<%= render partial: 'hoge', lacals: {hoge: hoge} %>
<% end %>
2行目の解説
_hoge.html.erbという部分テンプレートを呼び出し、その部分テンプレート内では、取り出された1つのhogeという要素をhogeという名前で扱う設定をする