#ruby on rails: view上のforeachの中で、複数回yieldに値を渡したいとき
railsの中でviewの数が増えてきてレンダリングしていると、
users/_user.html.erb
のような、同一viewで複数回参照されるものに対しても<%= render '~~' %>を使ってレンダリングしたくなってくるのですが、<% provide :name, user.name %>で渡すと
- 1人目 佐藤
- 2人目 佐藤田中
- 3人目 佐藤田中小杉
- 4人目 佐藤田中小杉鈴木
…
と、値をストックしてしまってまともにidを渡せずに、しばらく困っていました。
#content_forを使う
そもそもyieldに、provide以外で渡す方法を知らなかったのですが、調べてみると、
<% content_for :name, flush: true do %>
<%= user.name %>
<% end %>
として、content_forで渡せば
- 1人目 佐藤
- 2人目 田中
- 3人目 小杉
- 4人目 鈴木
…
と、その場で表示したいidや名前だけにできるようです。
備忘録と、調べてもなかなか出てこなかったので、同じ悩みを抱えている方に役立てばいいなと思いつつメモ。