はじめに
JavaScriptでも、Railsでも登場したので、まとめておく。正確にはJSの学習中に、出てきただけで、記述方法や言語はRubyである。
renderメソッドとは
renderの訳は「与える」。つまり、何かを与えるときに使うメソッド。では、何を与えるのか。
ここでは3種類の使い方を紹介する。3つに共通しているのは「レスポンスとして返している」ということ。
部分テンプレートを与える
railsで、共通するHTMLを一つのファイルにまとめ、必要な箇所に代入のような形で呼び出す。この仕組みを部分テンプレートである。
部分テンプレートのメリットは、
・同じコードを何度も書かなくて済む。(使いまわせる)
・変更があった場合、修正する箇所が少なくて済む。
・一つのファイルの記述量が減り、読みやすくなる。
などが考えられる。
部分テンプレートのポイント
呼び出し方法
<% render partial: "test" %>
「test.html.erb」というファイルを呼び出している。(同じ階層にファイルがある場合)
partial
オプションを使って、呼び出すファイルを指定する。
※ファイル名は「(アンダースコア)」から始める。
※部分テンプレート内で変数を用いる場合はlocal
オプションを用いるが、今回は割愛する。
レスポンスの形式を指定して与える
JSを用いてAjax(非同期通信)を行うには、ファイルとしてサーバーをやりとりをするのではなく、データ形式でやりとりを行う。その際、Railsでは、デフォルトでファイル形式でをレスポンスを返すことになっているので、renderメソッドを用いて、形式を変えることができる。
レスポンス形式の指定のポイント
例えばコントローラーで、
def new
post = Post.new
render json: { post: post }
end
{ post: post }
をjson形式でレシポンスしているということになる。Ajaxでは頻出。
viewを与える
例えば、railsでのコントローラーで、
render 'ファイル名'
とすると、指定した、ファイルを表示させることができる。
よく似た使い方にredirect_to
メソッドがあるが、こちらは、ルーティングやコントローラーを経由して、ビューを表示させる。render
メソッドは、経由せず、直接表示するという違いがある。
ポイント
- 「与えている」というイメージを大切に。
-
redirect_to
メソッドの使い分けに注意。
最後に
共通して言えるのは、どれもレスポンスとして返しているということ。他にも、ただ文字列を返すだけ、など様々な使い方がある。