일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 건담베이스
- Python
- vscode
- jsp
- 비즈니스일본어
- 一日一つメソッド
- CSS
- DART
- rails
- Web
- 반다이몰
- 건담
- 인프런
- 일본어
- html
- Flutter
- rails7
- 日本語
- 연습문제
- C로 시작하는 컴퓨터 프로그래밍4판
- ruby
- 디지몬
- メソッド
- 자바
- nico
- javascript
- java
- Spring
- springboot
- 単語
- Today
- Total
AR삽질러
Rails 一日一つメソッド (Day14) redirect_toメソッド 본문
Rails 一日一つメソッド (Day14) redirect_toメソッド
redirect_toメソッドとは
- 指定したURLに遷移させることがでくるメソッド。
- ユーザーのブラウザを他のURLにリダイレクトさせる。
redirect_to "リダイレクト先”
railsではパスが送られるとルーチィングで決められたCotrollerのアクションが実行される。
redirect_toメソッドを使うと、決められたCotrollerのアクション以外のアクションなどを実行させ、選択したビューフィイルを表紙する。
redirectメソッドの使い方
1) URLで指定
指定したURLにredirectする。
redirect_to "URL"
redirect_to "http://example.com"
2) Prefixで指定
Prefixで指定したActionにRedirectする。
redirect_to Prefix名
redirect_to root_path
3) アクションで指定
同一Controllerの指定したActionにRedirectする。
redirect_to action: :Action名
redirect_to action: :new
4) 指定したControllerのアクションで指定
指定したControllerの指定したActionにRedirectする。
redirect_to controller: :Controller名, action: :アクション名
redirect_to controller: :users, action: :show
5) アクションの個別のリソースを指定
RedirectされるActionがshowのidが1のResourceの指定は
redirect_to controller: :users, action: :show, id: 1
6) 前のページを指定
現在開いている前のパージへRedirectする。
redirect_to :back
redirectメソッド : satausを指定してリダイレクトする方法
- statusコードとはwebサーバーからのレスポンスの意味を数字3桁で表したコード。
- redirect_toではstatusコードを指定して実行させることができる。
シンボル | コード | 説明 |
:ok | 200 | requestが成功し、正常なreponseが返った |
:create | 201 | requestが成功し、リソースの生成に成功 |
:moved_permanently | 301 | resourceが永久的にレダイレクトされる |
:found | 302 | resourceが意図的にリダイレクトされる |
:see_other | 303 | resourceが別の場所にある |
:bad_request | 400 | 不正なrequestである |
:unauthorized | 401 | 未承認のためにrequestは失敗 |
:forbidden | 403 | アクセス禁止のためにrequestは失敗 |
:not_found | 404 | resourceが存在しないためrequestは失敗 |
:method_not_allowed | 405 | HTMLメソッドが許可されていない |
:internal_server_error | 500 | 内部サーバエラー |
redirectメソッド例題)UsersControllerでユーザーが存在しない場合Main Pageにリダイレクトし、ユーザーの情報を成功的にUpdateした時はユーザーのPageにリダイレクトする。
user_controller.rb
Class UsersController < ApplicationController
def show
@user = User.find_by(id: params[:id])
redirect_to(root_url, notice: "User not found") if @user.nil?
end
def update
@user = User.find(params[:id])
if @user.update(user_params)
redirect_to user_path(@user), notice: 'User info updated'
else
render :edit
end
end
Redirectした時のメッセージを表紙する
- redirect_toでnoticeやalertを使うことによりflashメッセージを設定し、メッセージを表紙させることができる。
- flashメッセージとは、Actionの実行後に一度だけ表紙することができるメッセージ
例)flash[:success] = '登録に成功しました'
redirect_to root_path, notice: 'ユーザー登録に成功しました'
View fileに表紙させたい場所に記述する。
<%= notice %>
redirect_toメソッドとrenderメソッドの違い
- redirect_toメソッドとrenderメソッドの違いは、Actionを通してViewを表紙させるか、されないかの違いがある。
- redirect_to は1回指定したActionを実行して、そのActionに対応したViewを表紙する。
目的 | 例 | |
redirect_to | ユーザーを他のURLにリダイレクションする。HTTP状態コード302 | ユーザーがあるタスク(例:フォームの提出)を完了したときに新しいページに移動する必要がある場合に使用。 |
目的 | 例 | |
render | 特定のViewをレンダリングしてユーザーに表紙する。 | 特にフォーム提出過程でエラーが発生した時、同じページにエラーメッセージを表示する時に使用。 |
def create
@user = User.new(user_param)
if @user.save
redirect_to user_path(@user), notice: "User successfully created"
else
render :new
end
end
@user.saveが成功した時、ユーザーはuser_path(@user)にリダイレクションする。
@user.saveが失敗したら、newにレンダリングされる。
redirect_toメソッドとrenderメソッドの主な違い | |
HTTP要請 | redirect_toは新しいHTTP要請を発生させる反面、renderは現在のHTTP要請中で行われる。 |
Data保持 | redirect_toを使うと全てのインスタンス変数が初期化され、新しいパージが始める。 renderは現在のインスタンス変数を保持する。 |
URL | redirect_toはURLを変更する。 renderはURLを変更しない。 |
'Ruby > RubyOnRails-日本語' 카테고리의 다른 글
初めてのRuby on Rails ミニQ&Aサイト開発 - create, show(2) (2) | 2024.01.03 |
---|---|
Rails 課題 - 生成メソッド、validate、viewの修正、ログイン機能 (0) | 2024.01.03 |
Rails 一日一つメソッド (Day13) require、permitメソッド (0) | 2024.01.02 |
Rails 一日一つメソッド (Day12) orderメソッド (0) | 2024.01.01 |
初めてのRuby on Rails ミニQ&Aサイト開発 - 環境構築(1) (0) | 2023.12.31 |