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メソッドを使う、ということだと思います、、、。違ったら修正します。
参考文献
最後に
読んでくださって、どうもありがとうございます。
たわら
この記事が気に入ったらサポートをしてみませんか?