🎉

部分テンプレートを render で記載する方法

2022/02/26に公開

rails で for_each を使い繰り返し表示する事が多くあります。
例えば index 内に for_each を使い配列のデータ分繰り返して表示するときです。

index.html.erb
#indexアクションに@users = User.allを記載している時
<% @users.each do |user| %>
  <td><%= user.id %></td>
  <td><%= user.name %></td>
  <td><%= user.email %></td>
<% end %>

上記の記載を下記の様に記載することができコードの記載をスッキリさせる事ができます。
render に複数形の@から始まるオブジェクトをの配列を渡すと自動的に_user パーシャルレンダリングをして表示させる事ができます。

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

each ではデータ分繰り返し表示されるが render をつかう呼び出しが一回なのでパフォーマンスが上がります。

短縮した書き方ができる条件があります。

  • 呼び出す部分テンプレートが views フォルダ内にある users フォルダに存在する。
  • 部分テンプレート名が_user.html.erb である。
  • 部分テンプレート内で使う変数が user である。

Discussion