renderとredirect_to
render
- 描画するためのテンプレートを探す(規約:views/コントローラ名/アクション名.html.erb)
- 見つかったテンプレートをもとに、データを展開し最終的なHTMLを生成しレンダリングする。
class UserController < ApplicationController def edit # 文字列またはシンボルでテンプレートを指定 # renderは省略可 暗黙的にrender 'アクション名'と解釈される render '/edit' render :edit render 'posts/edit' # 他のコントローラからテンプレートを指定 end
# オブジェクトからJSON形式に変換し、ブラウザに送信する render json: @user render json: @user.error, status: :forbidden # ステータスコードを制御
RailsはHTMLだけでなく、JSONやXMLなどのフォーマットで表示させることもできる。
def show # コンテンツのタイプによって表示を出し分ける respond_to do |format| format.html # render :show, format: :htmlと同義 format.json { render json: @book } # 内容を指定しない場合、show.json.erbなど規約に合致したものをレンダリングする end end
redirect_to
別のURLに対して改めてリクエストを再送信するよう、ブラウザに指令を出す。
リクエストは行われる。
class UserController < ApplicationController def show redirect_to users_url # 絶対パス redirect_to @user # user_url(@user)に相当する end