#はじめに
『なぜredirect_toではなくてrenderを使うのだろう??』
「renderのメリットは何??」
画面遷移を行うrenderメソッドとredirect_toメソッドについて、このような疑問が湧いたのでまとめてみました。
#renderメソッドとredirect_toの違い
画面遷移を行うメソッドはrenderとredirect_toの二つがあります。2つのメソッドの違いは
①render→リクエストを送らず、そのままviewを表示
②redirect_to→再度リクエストを送り、routing→controllerを通りviewを表示させる
です。
#renderとredirect_toの使い方
renderとredirect_toはそれぞれどのように使うのでしょうか。1つの例として、updateアクションで更新に成功したらredirect_toでトップページに戻る。ブランクなどで更新に失敗したらrenderでeditページに戻るという実装があります。
def update
@hoge = Hoge.find(params[:id])
if @hoge.update(hoge_params)
redirect_to prototype_path(params[:id])
else
render :edit
end
end
この時更新失敗時にrenderを使うメリットとしては、入力値を保持したままeditを再表示できることです。
※注意点としては、変数をインスタンス変数にしておく事です。renderでそのままviewを表示させるのでインスタンス変数を指定しないとエラーになります。
#まとめ
画面遷移を行う2つのメソッドについてまとめました。redirect_toは単純に1から再表示させたい時などに使い、renderは入力値を残したまま再表示したい時に使うことができます。
今回の記事が少しでも誰かのお役に立てれば幸いです。