0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

redirect_toとrenderメソッドの違い  

Last updated at Posted at 2022-01-06

#はじめに
 『なぜ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ページに戻るという実装があります。

hoge_controller.rb
  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は入力値を残したまま再表示したい時に使うことができます。
今回の記事が少しでも誰かのお役に立てれば幸いです。

0
0
1

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?