LoginSignup
4
4

More than 3 years have passed since last update.

renderメソッドについて

Posted at

背景

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
4
4
0

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
4
4