renderメソッドを使ってビューテンプレートを呼び出してみます。
class BooksController < ApplicationController
def show
render :show
end
end
render :show
で行われていること
ここで表示するテンプレートはapp/views/books/show.html.erb
ファイルになります。
※ renderの省略が可能です。省略した場合は暗黙的にrender アクション名
と解釈されます。
コンテンツのタイプによって表示を出し分けてみます。(HTML、JSON、XMLなどのフォーマットがあります)respond_toブロックを使用して出し分けするのが一般的です。
def show
respond_to do |format|
# htmlフォーマット
format.html
# jsonフォーマット
format.json { render json: @book }
end
end
format.html
はrender :show, format: :html
と同じ意味です。HTMLテンプレートでshowアクションのテンプレートを参照します。
JSONの場合も同様です。format.json
はrender :show, format: :json
と同じ意味です。show.json.erbファイルを参照しにいきます。
上記の例ではformat.json
にブロックを渡しています。この場合はテンプレートを探さずに@book
オブジェクトをJSONにしたデータを返す指定にしています。books/1.json
にアクセスすると下記のような表示がされます。
リダイレクト処理
redirect_to
メソッドを使います。アプリケーションのパスやURLを渡します。
redirect_to
とrender
の使い分け:データの更新/削除、inputやformなど何かデータを送る処理しているか、ログインなどの成否判断の処理をしているかです。この場合はredirect_to
を使います。