LoginSignup
1
4

More than 3 years have passed since last update.

Ruby on Rails [render]について

Last updated at Posted at 2019-10-21

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

1
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4