Output Diary

プログラミング × 読書 のアウトプットを発信しています

【Rails】redirect_toとrenderの違いについて

f:id:kina_kq:20210422080753j:plain

 

おはようございます☀

今日は、redirect_torenderの違いについてまとめていこうと思います。

 

 redirect_toとrenderの違い

 

・render     : controller → view
・redirect_to   : controller → URL → route → controller → view

 

renderはいきなりviewに飛ぶのに対し、

redirect_toの方が寄り道が多いことがわかると思います。

  

renderは、

アクションを実行せずにビューファイルを表示させるのに対し、

redirect_toは、

1回指定したアクションを実行してそのアクションに対応したビューを表示させます。

 

redirect_toとは

 

 redirect_toは、

指定したURLに遷移させることができるメソッドです。

 

redirect_toメソッドを使うと、決められたコントローラーのアクション以外のアクションなどを実行させ、選択したビューファイルを表示させることができます。

 

 redirect_toメソッドのリダイレクト先の指定

 

パターン1:URLで指定する

redirect_to "https://www.pokemon.co.jp/"

 

パターン2:アクションで指定

redirect_to action: :new

 

パターン3:指定したコントローラのアクションで指定

redirect_to  controller: :users, action: :show

 

パターン4:アクションの個別のリソースを指定

redirect_to  controller: :users, action: :show, id: 1

 

パターン5:前のページを指定

redirect_to :back

 

 などがあります。

その他にもステータスコードを指定してリダイレクトをさせることも可能です。

 

renderとは

 

renderは、

Action内で、呼び出すViewを指定するメソッドです。

Action内でインスタンス変数として格納されたものは、viewから呼び出せます。

 

 

使い分け

 

データを追加、更新、削除を行う時 →「redirect_to」
データの取得を行う時 →「render」

 

controllerの処理が必要だー!といったものに対しては、

redirect_toを使い、

 

失敗したらエラー表示させるだけでよいよーといったものに対しては、

renderを使うといった感じです。

 

参考

 

【Rails】renderとredirect_toの違いと使い分け - Qiita

【Rails】redirect_toとrenderの使い分け - Qiita

renderとredirect_toの違いを整理 【Day 1/30 2nd】|K.Tawara|note

【Rails】redirect_toの使い方を徹底解説! | Pikawaka - ピカ1わかりやすいプログラミング用語サイト