部分テンプレートを呼び出す際に使用される。部分テンプレートとは_board.html.erb
などのことで、この部分テンプレートを繰り返し表示される際にはcollectionを使用する。
例えば
<%= board.title% >
<%= board.body% >
この部分テンプレートをcollectionを使用せずに書くと
<% @boards.each do |board| %>
<%= render 'board', board: board %>
<% end %>
eachを使い繰り返し呼び出している。
collectionを使用し書くと
<%= render partial: 'board', collection: @boards %>
collectionに@boardを渡して、内部要素を1つ1つ取り出している。意味的にはにはeach文とほぼ同じように見えるが、まとめて部分テンプレート呼び出すためパフォーマンスが良い!
ちなみにeach文だとレコードの数だけ繰り返し呼び出すため1万件レコードがあった場合パフォーマンスは歴然である。
だってcollectionのほうは1/10000だからね
collectionは省略して書くこともできる。
<%= render @boards %>
ただし条件があって
部分テンプレートが呼び出し元のテンプレートと同じディレクトリ内にある
index.html.erb
と_board.html.erb
(部分テンプレート)が同じディレクトリにある
部分テンプレートのファイル名がオプションで指定した変数の単数形である
オプションで指定した変数名が@boardsであれば、部分テンプレートは_board.html.erb
である
部分テンプレート内で使用する変数名が、オプションで指定した変数の単数形である
オプションで@boardsを渡したなら、部分テンプレート内で使用する変数名がboardである
オプションで@boardsを渡したなら、部分テンプレート内で使用する変数名がboardである
参考というかほぼパクリ https://himakuro.com/rails-render-collection