共通で使うrenderファイルにデータを渡す方法
- partialファイル(_xxx.html.erb)を呼ぶ出すときはrenderメソッドを使う。
= render 'xxx' もしくは = render partial: 'xxx'
- データを渡したいときはlocalsオプションを利用する。
= render partial: 'xxx', locals: { key: data}
localsオプションにはオブジェクトを渡します。
オブジェクトのkeyがパーシャル内で参照できる値になります。
また、localsオプションだけを指定する場合は省略形で記述することも可能です。
= render 'xxx', key: data
例
index.html.erb
<div class="contents row">
<% @tweets.each do |tweet| %>
<%= render partial: "tweet", locals: { tweet: tweet } %>
<% end %>
<%= paginate(@tweets) %>
</div>
_tweet.html.erbというpartialファイルがあるとします。
partialファイルtweetをrenderメソッドで呼び出す。
localsオプションではkeyがtweetで値がeach文の|tweet|である。
= render 'tweet', tweet: tweetとしても呼び出す事ができる。
_tweet.html.erbファイルではtweetをキーとして@tweetsの変数であるtweetを使用できる。
<%= simple_format(tweet.text) %>
<span class="name">
<a href="/users/<%= tweet.user_id %>">
<span>投稿者</span><%= tweet.user.nickname %>
</a>
</span>