LoginSignup
1
2

More than 3 years have passed since last update.

Railsのredirect_toとrenderの違い

Posted at

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を使うというように使い分けると良いでしょう。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2