1
1

More than 3 years have passed since last update.

Rails render redirect_to

Last updated at Posted at 2020-08-16

はじめに

今回はRailsでよく使われるrenderとredirect_toの違いについて。

render

renderはコントローラー内でviewファイルを決定しレンダリングされる。


render :edit

この場合だとviewファイルのeditに対応するhtmlファイルが呼び出される。

別のコントローラーからの呼び出し

別のコントローラーからの呼び出しも可能でその場合、app/viewsを起点とするフルパスを渡すことができるので、出力したいテンプレートをフルパスで指定する。


render "users/show"

app/views/usersからviewテンプレートを呼び出すことができる。

任意のファイルの指定

現在のディレクトリの外部にあっても指定することが可能。


render "/xxx/apps/user_directory/current/app/views/users/show"

様々な記述方法

render :edit
render action: :edit
render "edit"
render "edit.html.erb"
render action: "edit"
render action: "edit.html.erb"
render "books/edit"
render "books/edit.html.erb"
render template: "books/edit"
render template: "books/edit.html.erb"
render "/path/to/rails/app/views/books/edit"
render "/path/to/rails/app/views/books/edit.html.erb"
render file: "/path/to/rails/app/views/books/edit"
render file: "/path/to/rails/app/views/books/edit.html.erb"

redirect_to

別のURLに対して改めてリクエストを再送信するよう、ブラウザに指令を出すためのもの。
引数にリダイレクトさせたいurlを渡す。


redirect_to users_url
redirect_to "http://www.~"

コントローラーを指定


redirect_to  controller: :users, action: :edit

前ページにリダイレクト

現在のページから前ページにリダイレクトさせる。

redirect_to :back

リダイレクトのステータスコードの変更

redirect_toはデフォでHTTPステータスコード302がブラウザに返され、リダイレクトを行う。
変更を行いたい場合

redirect_to users_path, status: 301

リダイレクした際にメッセージ追加

redirect_to users_path, notice: '追加しました

renderとredirect_toの違いについて

renderがviewファイルを指定し、表示させるだけの処理に対して
redirect_toは別のURLに対してリクエストを再送信しブラウザを動作させる。

viewファイルの表示かhttpリクエストを投げるかの違い。

renderは前画面に戻ってデータを取得して表示をさせる使い方ができる。
redirect_toはデータの更新や削除などが挙げられる。

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