renderとredirect_toの挙動が似ていて、混同しがちだったので
調べたものをまとめておきます。
renderとredirect_toの違い
・render : 表示させるviewファイルを指定
・redirect_to : URL(HTTPリクエストメソッド)を指定
renderは("フォルダ名/viewファイル名")
def
render("user/edit")
end
redirect_toは("/URL/〜/〜/”)
def
redirect_to("/app/posts/new")
end
renderとredirect_toの動き方の違い
・render : controller → view
・redirect_to : controller → URL → route → controller → view
redirect_toの方がちょっと遠回りしてますね。
renderがviewファイルを指定して、それを表示させるだけの処理に対して
redirect_toはブラウザ上でHTTPリクエストを受けたのと同じ処理がされます。
renderとredirect_toの使い分け
そのページに移る際に、
1.データの更新/削除、inputやformなど何かデータを送る処理
2.ログインなどの成否判断の処理
が行われているかで使い分けができます。
上のような処理が必要な場合には、
####HTTPリクエストがPOSTの可能性が高い&適切なcontrollerの処理が要求される
為、redirect_to
を使用します。
・render : ログインや入力形式に失敗した場合など = ただエラーを表示させるだけ
・redirect_to : データ更新/削除が必要な場合 = controllerの処理が必要
参考サイト
RailsGuide
https://railsguides.jp/layouts_and_rendering.html#redirect-to%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B
https://railsguides.jp/layouts_and_rendering.html#render%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B
render と redirect の違い
https://qiita.com/january108/items/54143581ab1f03deefa1
railsのrenderとredirect_toの違い
https://qiita.com/1ulce/items/282cccba1e44158489c8
【Rails】redirect_toとrenderの使い分け
https://qiita.com/jumpyoshim/items/ed10721c26963abdf121