renderメソッド(Rails)

WHAT
renderメソッドについてまとめる

基本構文

render :option

・指定したRHTMLを返す
・同じアクション内でrenderメソッドを複数呼び出すと、エラーになるので、and returnを付ける

リファレンスより抜粋。
部分テンプレ用だと勝手に思ってたけど、ビューを選ぶメソッドなのね。
複数呼び出すと〜というのは

if true
  render :new
else
  render :index
end

こういうのがエラーになるので

if true
  render :new and return
else
  render :index and return
end

こうしろと。

renderにはオプションに加えて省略形がいくつかある

action: 'アクション名'        同じコントローラの別アクションのビューを呼ぶ
                    action: を省略して render :new のように書ける
template: 'コントローラ/アクション'  別コントローラのアクションのビューを呼ぶ
partial: '部分テンプレート名'    部分テンプレートを呼ぶ
layout: 'レイアウト名'        レイアウトを指定する
collection: 渡す変数(@複数形)    部分テンプレートに変数を配列で渡す。
                   部分テンプレート内では単数形の変数名が使える
local: { テンプレ内変数: 渡す変数 } 部分テンプレートに変数を渡す

部分テンプレートに渡す変数は極力collectionで渡す。
eachなどでローカル変数を描画するよりパフォーマンスが向上する。
部分テンプレートを使う場合、partialとcollectionを省略することができ、

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

このコードはどちらも同じ意味となる。