LoginSignup
1
0

More than 5 years have passed since last update.

Rails renderとredirect_toの違い

Last updated at Posted at 2019-03-29

はじめに

railsチュートリアルを進めていく中で、
renderredirect_to
がごっちゃになったので整理しようと思います。

render

ざっくりいうと、コントローラのアクションからViewを呼び出すメソッド。
対象となるアクションのコードを実行しないため、データの取得を行う時は「render」を扱う。

同じコントローラ内からViewを呼び出す

例:

app/controllers/same_controller.rb
def update
  @book = Book.find(params[:id])
  if @book.update(book_params)
    redirect_to(@book)
  else
    render "edit"
  end
end

この場合、elseになり render が実行されると、同コントローラ内のedit.html.erbが出力される。

また以下のようにシンボルを扱うこともできる。
render :edit

よくあるエラーとして、二重にレンダリングしてしまっている場合があるので、その場合は and return などで二重レンダリングを回避する。

redirect_to

renderメソッド はレスポンス構成時にどのビュー (または他のアセット) を使用するかを指定するためのもの。

それに対して redirect_toメソッド は、別のURLに対して改めてリクエストを再送信するよう、ブラウザに指令を出すためのものとなる。

controllerのインスタンス変数は、リダイレクト先で新たに生成されるので、データを追加、更新、削除を行う時は「redirect_to」を扱う。

まとめ

redirect_toは移動するもの、renderはその場に表示させるもの

参考

https://railsguides.jp/layouts_and_rendering.html
https://qiita.com/jumpyoshim/items/ed10721c26963abdf121

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