redirect_toとは
redirect_toメソッドはHTTPレスポンスを返し、自動的にページを切り替えるメソッドになります。これによりRailsのコントローラーでURLにリダイレクトさせる処理を書くことが出来ます。
そもそもリダイレクトとは、指定されたURLに自動でアクセスするように返され、リダイレクト先のURLに永続的を示すステータスコード301か一時的を示すステータスコード307かを示すステータス情報を送信します。
renderとは
renderは文字列、HTML、XML、JSONなどを指定して出力し、主にRailsではコントローラーからviewを呼び出し、画面に表示します。このようにrederは表示するものを指定し画面に表示するメソッドになります。
redirect_toとrenderの違い
では実際にredirect_toとrenderがどのように違う働きをするのかを見ていきましょう。まず2つのメソッドが実際に画面に表示するまでの動きとして、
・render : controller → view
・redirect_to : controller → URL → route → controller → view
上の図を見ると分かりますが、renderはコントローラーからそのまま画面を描画します。一方、redirect_toはブラウザでHTTPリクエストを受けたのと同じ処理がされます。
まとめ
単純に画面の遷移を行う場合はrenderを行い、HTTPリクエストがPOSTでデータを作成、更新、削除を行ったあとに画面を遷移する場合はredirect_toを使うというように使い分けると良いでしょう。