3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

<%= render @boards %>

Posted at

部分テンプレートを呼び出す際に使用される。部分テンプレートとは_board.html.erbなどのことで、この部分テンプレートを繰り返し表示される際にはcollectionを使用する。

例えば

_board.html.erb
<%= board.title% >
<%= board.body% >

この部分テンプレートをcollectionを使用せずに書くと

index.html.erb
<% @boards.each do |board| %>
  <%= render 'board', board: board %>
<% end %>

eachを使い繰り返し呼び出している。

collectionを使用し書くと

index.html.erb
<%= render partial: 'board', collection: @boards %>

collectionに@boardを渡して、内部要素を1つ1つ取り出している。意味的にはにはeach文とほぼ同じように見えるが、まとめて部分テンプレート呼び出すためパフォーマンスが良い!

ちなみにeach文だとレコードの数だけ繰り返し呼び出すため1万件レコードがあった場合パフォーマンスは歴然である。

だってcollectionのほうは1/10000だからね

collectionは省略して書くこともできる。

index.html.erb
<%= render @boards %>

ただし条件があって

部分テンプレートが呼び出し元のテンプレートと同じディレクトリ内にある
index.html.erbと_board.html.erb(部分テンプレート)が同じディレクトリにある
部分テンプレートのファイル名がオプションで指定した変数の単数形である
オプションで指定した変数名が@boardsであれば、部分テンプレートは_board.html.erbである
部分テンプレート内で使用する変数名が、オプションで指定した変数の単数形である
オプションで@boardsを渡したなら、部分テンプレート内で使用する変数名がboardである
オプションで@boardsを渡したなら、部分テンプレート内で使用する変数名がboardである
参考というかほぼパクリ https://himakuro.com/rails-render-collection

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?