renderとredirect_to

render

ビューを出力(レンダリング)する。リクエストは行われない。

  1. 描画するためのテンプレートを探す(規約:views/コントローラ名/アクション名.html.erb)
  2. 見つかったテンプレートをもとに、データを展開し最終的な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だけでなく、JSONXMLなどのフォーマットで表示させることもできる。

  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