見出し画像

renderとredirect_toの違いを整理 【Day 1/30 2nd】

こんちには、たわらです。

今回はrenderとredirect_toの違いを整理しておきます。どちらもControllerの特定のアクション特定のviewを表示するメソッドです。

def create
   @user = User.new(user_params)
   if @user.save
     redirect_to login_path
   else
     render :new
   end
 end

2つのメソッドはこのようによく使われます。

renderとredirect_toの処理の流れの違い

renderメソッド

呼び出すviewを指定するメソッドです。

処理の流れ:controller → veiw

このアクション内でインスタンス変数に格納されたものは、viewで扱えます。

redirect_toメソッド

HTTPリクエストをサーバーに送り、レスポンスを表示するメソッドです。

処理の流れ:controller → URL → route → controller → view

viewは一つ前のcontrollerで渡されたインスタンス変数をもとにレスポンスをします。

renderとredirect_toの使用目的の違い

renderメソッド
指定したviewファイルを表示したいときに使用します。

この場合は、ユーザー登録に失敗したら、登録画面をレンダリングするように指示しています。

redirect_toメソッド
データの追加、更新、削除をしたいときに使用します。

この場合は、別のコントローラーのアクションを行いたいので、別のURLである login_path に対してHTTPリクエストを発行しています。

要するに、、、

別のURLに遷移したいときには、redirect_toメソッドを使う、ということだと思います、、、。違ったら修正します。

参考文献

最後に

読んでくださって、どうもありがとうございます。

たわら

この記事が気に入ったらサポートをしてみませんか?