#Ruby on Rails [render]について
Ruby on Rails学習中、renderメソッドに関して、色々調べたので備忘録の意味も含め、まとめました。
##renderメソッドとは
renderメソッド:コントローラーファイル内定義したアクションにて、呼び出すViewファイルを指定するメソッド
特定のビューを複数回使い回す場合、eachメソッドを用いるよりも、部分テンプレートをrenderした方が動作が高速になるため、そのような時にrenderメソッドを使用します。
*この時使用するテンプレートファイル名は「_」から記載します。
###renderメソッドの使い方
下記を仮置きとして設定します。
def index
@tweets = Tweet.all.order("created_at DESC")
end
テンプレートファイル名
_tweet.html.erb
###1. 一回だけテンプレートファイルを使う時
パターンA
<%= render partial:'tweet', locals:{tweet(部分テンプレート内で使用する変数),tweet} %>
パターンB*超特例
<%= render @tweet %>
*条件(下記の時のみ使用可能)
複数形のインスタンス変数を部分テンプレートに渡す時、インスタンス変数の名前を単数形にしたものと、部分テンプレートの名前が同じであれば、使用可能。
上記の場合、インスタンス変数:tweets 部分テンプレート名:tweetなので使用可能です。
###2.複数回テンプレートファイルを使う時
パターンA
<% @tweets(コントローラ内インスタンス変数).each do |tweet| %>
<%= render partial:'tweet', locals:{tweet(部分テンプレート内で使用する変数),tweet} %>
<% end %>
*locals: { 部分テンプレート内で使いたい変数: 持っていきたい値 }
パターンB
<%= render partial:'tweet', collection @tweets %>
*パターンAの短縮系
パターンC*超特例
<%= render @tweets %>
*条件(下記の時のみ使用可能)
インスタンス変数 = 部分テンプレート内で使いたい変数
####ちなみに。。
変数を複数設定する場合は、locals:{},{},{}...という記載で追記します。
<%= render partial:'tweet', locals:{},{},{} %>
以上となります。最後までご覧いただき、ありがとうございました!
今後も学習した事項に関してQiitaに投稿していきますので、よろしくお願いします!
記述に何か誤りなどございましたら、お手数ですが、ご連絡いただけますと幸いです。
#参照
忘れがちなrenderメソッドの使い方まとめ [Rails]
https://qiita.com/hayashino/items/c2a4e7d3edbdcce3cd2a