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.htmlrender :show, format: :htmlと同じ意味です。HTMLテンプレートでshowアクションのテンプレートを参照します。

JSONの場合も同様です。format.jsonrender :show, format: :jsonと同じ意味です。show.json.erbファイルを参照しにいきます。

上記の例ではformat.jsonにブロックを渡しています。この場合はテンプレートを探さずに@bookオブジェクトをJSONにしたデータを返す指定にしています。books/1.jsonにアクセスすると下記のような表示がされます。

https://i.gyazo.com/c57af5a2bea076627cf4d6f0e9f2afae.png

リダイレクト処理

redirect_toメソッドを使います。アプリケーションのパスやURLを渡します。

redirect_torenderの使い分け:データの更新/削除、inputやformなど何かデータを送る処理しているか、ログインなどの成否判断の処理をしているかです。この場合はredirect_toを使います。

【Rails】renderとredirect_toの違いと使い分け - Qiita