renderメソッドについて

ビュー内でrenderメソッドを用いることで、部分テンプレートをビュー内に含めて出力することができる

paritialオプション

呼び出す部分テンプレートを指定

render  partial: "tweet"
#もしくは
render "tweet"
#->_tweet.html.erbを呼び出す

localsオプション

部分テンプレート内で、その変数を利用できるようになる

render partial: "tweet", locals: {tweet: "hello"}
#→ _tweet.html.erb内でhelloという文字列が代入されたtweetという変数が利用できるようになる

collectionオプション

データの繰り返し(コレクション)を出力する際にもちいる。コレクションのメンバ(要素)ごとに部分テンプレートがレンダリングされて挿入される

 render partial: "tweet", collection: @tweets
# →_tweet.html.erbパーシャル内でtweetという変数名を利用して出力されるインスタンス(コレクションのメンバ)を利用できる

この時、出力する部分テンプレートがtweets/_tweet.html.erbにあれば

 render @tweets

と省略することも可能

また、collectionを用いない場合

@tweet.each do |tweet|
  render partial: "tweet" ,locals: {tweet: tweet}
end

となる

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.