今回は、renderメソッドの使い方を初心者向けにまとめたので解説したいと思います。renderといえば部分テンプレートを思い浮かべる方も多いと思いますが、renderメソッドには様々な使い方があるので順番に見ていきましょう。
renderメソッドとは
renderメソッドは、ユーザーへ送信するべき内容を決定・出力(レスポンス)処理を行ってくれるメソッドです。
ビューとコントローラーで使用することができます。
ビューでの使い方と記述方法
まずは、ビューでのrenderメソッドについて見ていきましょう。ビューでは部分テンプレートを呼び出す際にrenderメソッドが使用されます。
例えば、index.html.erb内でheader.html.erbとfooter.html.erbを呼び出したい場合、以下のように記述することができます。
↓ index.html.erb
<%= render 'header' %>
<p>メインのコンテンツです</p>
<%= render 'footer' %>
↓ _header.html.erb
<p>ヘッダー部分です</p>
↓ _footer.html.erb
<p>フッター部分です</p>
このように、ビューでrenderメソッドを使う際は部分テンプレートの呼び出しに使われます。
部分テンプレートについてもっと詳しく知りたい方は、こちらの記事を参考にしてください。

コントローラーでの使い方と記述方法
特定のビューファイルや形式を表示したい場合は、コントローラーでrenderメソッドを指定してあげる必要があります。今回は以下のパターンでの使い方を紹介したいと思います。
- 特定のアクションに対するビューを表示したい時
- 別のコントローラーのアクションを呼び出したい時
- JSON形式でビューを返したい時
- テキスト(文字列)を返したい時
ではそれぞれ見ていきましょう。
特定のアクションに対するビューを表示したい時
特定のアクションに対するビューを表示したい時は、以下のように記述します。この場合では、views/users/edit.html.erbが表示されることになります。
class UsersController < ApplicationController
def index
render action: :edit
end
end
別のコントローラーのアクションを呼び出したい時
別のコントローラーのアクションを呼び出したい時は、以下のような記述になります。この場合では、views/items/new.html.erbが表示されます。
class UsersController < ApplicationController
def index
render template: "item/new"
end
end
JSON形式でビューを返したい時
JSON形式でビューを返したい時の記述は以下のようになります。今回説明は省略しますが、jsonでレスポンスが返された次はjbuilderでjson形式に変換される必要があります。
def index
respond_to do |format|
format.json
end
end
テキスト(文字列)を返したい時
テキスト(文字列)を返したい時は、以下のように記述します。indexアクションが呼び出された際、「呼び出されました」というテキストが画面に表示されます。
def index
render text: "呼び出されました"
end
隠れrenderメソッドが存在する?
ちなみに、「render〜」とコントローラーに明示的に記述しなくても、実はrenderメソッドは隠されています。例えば、users_controller.rbに以下のような記述をしたとします。
↓ users_controller.rb
class UsersController < ApplicationController
def index
end
end
上記のように、indexアクションの中に何も記述しない場合でもindexアクションの次はviews/users/index.html.erbが自動的に呼び出されます。つまり、デフォルトではコントローラーは「app/views/コントローラー名/メソッド名.html.erb」という名前のファイルをrenderメソッドを使って呼び出しています。
↓ users_controller.rb(きちんと記述するとこうなる)
class UsersController < ApplicationController
def index
render action: :index
end
end
まとめ
- renderメソッドは、ユーザーへ送信するべき内容を決定・出力(レスポンス)処理を行ってくれるメソッドである
- ビューでrenderメソッドを使う際は、部分テンプレートの呼び出しに使用される
- コントローラーでrenderメソッドを使う場合は、「特定のアクションに対するビューを表示したい時」「別のコントローラーのアクションを呼び出したい時」「JSON形式でビューを返したい時」「テキスト(文字列)を返したい時」などに使用される
- renderメソッドは明示的に記述していなくても、コントローラーで使われている
参考
Railsガイド:https://railsguides.jp/layouts_and_rendering.html
今回は、renderメソッドの使い方と記述方法を初心者向け解説しました。Railsでアプリケーションを実装する際、renderメソッドは必要不可欠と言っても過言ではないくらい重要なメソッドなので、ぜひこの機会に理解しておきましょう。