背景
renderメソッドを普段使っているが、オプションが沢山あることを知りその使い方をほとんど知らず、あまり使いこなせていると感じたのでもう少し詳しく調べて色々な使い方を学びたかったため調べて解説した。
renderメソッドとは
呼び出すテンプレート(ビュー)ファイルを指定するメソッドで、コントローラー・ビューどちらでも使うことができます。
ビューファイルへの書き方
<%= render 'ファイル名' %>
<%= render partial: 'ファイル名' %> # 部分テンプレート
オプション一覧
・actionオプション
指定したアクションの対応したビューが表示される
# createアクション実行した後にshowアクションを表示させる
def create
User.create(user_params)
render action: :show
# render :showと省略可
end
・partialオプション
部分テンプレートを呼び出す際に使う
<%= render partial: "_form.html.erb" %>
・templateオプション
他のコントローラーのテンプレートを呼び出すときに使う
# usersコントローラーのcreateアクションが動いた後にpostsコントローラーのshowアクションを表示させる
def create
User.create(user_params)
render template: "posts/show"
end
・layoutオプション
layout(application.html.erbのような複数のビューで使われるレイアウト)を呼び出す。
layoutを指定しないと自動で「application.html.erb」を呼び出しますが指定することで自分の指定通りの処理になる。
layout 'top'
def index
render layout: "top"
end
・fileオプション
アプリケーション外(別アプリ)のテンプレートを表示させるときに使う
render file: "別のアプリの呼び出したいテンプレートファイルのパス"
・plainオプション
直接文字列を表示させたい場合に使う
def index
render plain: "test"
end
・jsonオプション
オブジェクトをjson形式に変更して表示させたい場合に使う
def index
text = { name: "sato", url: "sato" }
render json: text
end
# => { name: "sato", url: "sato" }
・inlineオプション
Rubyのコードを展開し、表示させたいときに使う
def index
@name = "sato"
render inline: "<%= @name %>"
end
# => sato