【Rails】renderとredirect_toはどう使い分けるの?
はじめに
動作が似ているrenderとredirect_to
あまり意識せずに両者を使っていたので、それぞれの違いを調べてみました
renderとredirect_toの動き方の違い
redirect_toの方が多くの過程があり、具体的には以下のような過程の違いがあります。
・render: controller → view
・redirect_to: controller → URL → route → controller → view
renderとredirect_toの使い分け
renderはcontrollerで処理した結果を、指定したviewファイルに出力します。
redirect_toはviewファイルに出力する前に、1度ブラウザ上でURL(HTTPリクエスト)を指定し、再度controllerにリクエストを送信してから、viewファイルに出力します。
以上のことから、
データを追加、更新、削除を行うときは「redirect_to」、そうでなければ「render」という使いわけができそうです。
renderとredirect_toに関するエラー
1つのActionからは1つのViewしか返せません。 そのため、renderメソッドを2度呼び出したり、renderメソッドとredirect_toメソッドを両方呼び出すと、DoubleRenderErrorが発生します。
まとめ
「render」と「redirect_to」は動作が似ていますが、データの更新が必要な場合は「redirect_to」を、ログインや入力形式に失敗した場合など、ただエラーを表示させるだけの場合は「render」を使用する。というような使い分けができると思います。