Help us understand the problem. What is going on with this article?

Ruby on Rails [render]について

Ruby on Rails [render]について

Ruby on Rails学習中、renderメソッドに関して、色々調べたので備忘録の意味も含め、まとめました。

renderメソッドとは

renderメソッド:コントローラーファイル内定義したアクションにて、呼び出すViewファイルを指定するメソッド
特定のビューを複数回使い回す場合、eachメソッドを用いるよりも、部分テンプレートをrenderした方が動作が高速になるため、そのような時にrenderメソッドを使用します。
*この時使用するテンプレートファイル名は「_」から記載します。

renderメソッドの使い方

下記を仮置きとして設定します。

controller
def index
  @tweets = Tweet.all.order("created_at DESC")
end

テンプレートファイル名
_tweet.html.erb

1. 一回だけテンプレートファイルを使う時

パターンA

view
<%= render partial:'tweet', locals:{tweet(部分テンプレート内で使用する変数),tweet} %>

パターンB*超特例

view
<%= render @tweet %>

*条件(下記の時のみ使用可能)
複数形のインスタンス変数を部分テンプレートに渡す時、インスタンス変数の名前を単数形にしたものと、部分テンプレートの名前が同じであれば、使用可能。
上記の場合、インスタンス変数:tweets 部分テンプレート名:tweetなので使用可能です。

2.複数回テンプレートファイルを使う時

パターンA

view
<% @tweets(コントローラ内インスタンス変数).each do |tweet| %>
<%= render partial:'tweet', locals:{tweet(部分テンプレート内で使用する変数),tweet} %>
<% end %>

*locals: { 部分テンプレート内で使いたい変数: 持っていきたい値 }

パターンB

view
 <%= render partial:'tweet', collection @tweets %>

*パターンAの短縮系

パターンC*超特例

view
 <%= render @tweets %>

*条件(下記の時のみ使用可能)
インスタンス変数 = 部分テンプレート内で使いたい変数

ちなみに。。

変数を複数設定する場合は、locals:{},{},{}...という記載で追記します。

view
<%= render partial:'tweet', locals:{},{},{} %>

以上となります。最後までご覧いただき、ありがとうございました!
今後も学習した事項に関してQiitaに投稿していきますので、よろしくお願いします!
記述に何か誤りなどございましたら、お手数ですが、ご連絡いただけますと幸いです。

参照

忘れがちなrenderメソッドの使い方まとめ [Rails]
https://qiita.com/hayashino/items/c2a4e7d3edbdcce3cd2a

Tatsu88
働きながらプログラミング学習中(2019年9月〜) ¦転職活動準備中¦ 商社営業¦ TECH::EXPERT 61→60期(夜間)卒業¦サッカー¦筋トレ¦漫画¦モンスト¦リトルトゥース¦交換留学(カナダ UofT)¦Liverpool¦TOEIC(815)¦
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした