12
17

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 3 years have passed since last update.

【Ruby on Rails】redirect_toメソッドの使い方まとめ

Last updated at Posted at 2020-08-27

#【Ruby on Rails】redirect_toメソッドの使い方まとめ

Railsにビルドインされているredirect_toメソッドを使うことで、action内でページ遷移の設定をすることができる。

▼記述
redirect_to パス

パスの指定方法は複数ある。

  1. pathで指定
  2. アクション名で指定
  3. コントローラー名で指定
  4. コントローラー名とアクション名で指定
  5. コントローラー名とアクション名とid名で指定
  6. URLで指定
  7. model名(クラス)で指定
  8. パラメータで指定
  9. メッセージを指定
  10. ステータスを指定

公式ページ


##1. pathで指定

redirect_to XXX_path
 ┗ XXX: パスのprefix

redirect_to articles_path

パスの確認は、`rails routes`で可能。
terminal
$ rails routes
      Prefix Verb   URI Pattern                  Controller#Action
welcome_index GET    /welcome/index(.:format)     welcome#index
     articles GET    /articles(.:format)          articles#index
              POST   /articles(.:format)          articles#create
  new_article GET    /articles/new(.:format)      articles#new
 edit_article GET    /articles/:id/edit(.:format) articles#edit
      article GET    /articles/:id(.:format)      articles#show
              PATCH  /articles/:id(.:format)      articles#update
              PUT    /articles/:id(.:format)      articles#update
              DELETE /articles/:id(.:format)      articles#destroy
         root GET    /                            welcome#index

##2. action名で指定 コントローラーを指定せず、アクション名のみを指定した場合、現在のコントローラーの該当するアクションにリダイレクトされる。

redirect_to action: :アクション名

redirect_to action: :new

##3. コントローラー名で指定 アクションを指定せず、コントローラー名のみ指定した場合は、**指定したコントローラーのindexアクションに飛ぶ**

redirect_to controller: :コントローラー名

redirect_to controller: :welcome

##4. コントローラー名とアクション名で指定 条件を複数つなげる場合は**カンマで繋ぐ**

redirect_to controller: :コントローラー名, action: :アクション名

redirect_to controller: :welcome, action: :index

##5. コントローラー名とアクション名とid名で指定 id番号を使って表示するページの場合は、id番号も合わせて指定する。

redirect_to controller: :コントローラー名, action: :アクション名, id: id番号

redirect_to controller: :articles, action: :show, id: article.id

##6. URLで指定 URLを直接指定する。相対パスでもOK。

redirect_to "URL"

redirect_to "https://railsdoc.com

##7. model名(クラス)で指定 model名を指定すると、そのmodelと対応するコントローラーのindexアクションのページに遷移する。

redirect_to モデル名

redirect_to Article

##8. パラメータで指定 DBから取得したデータを指定すると、そのコントローラーのshowアクションに該当するページに遷移する。

redirect_to パラメータ

@article = Article.new(article_params)
redirect_to @article

  private
    def article_params
      params.require(:article).permit(:title, :text)
    end

##9. メッセージを指定 オプションでnoticeを使うと、指定したテキストを遷移先ページに送ることができる。

viewページの<% notice %>とセットで使用する。

redirect_to パス, notice: "テキスト"

redirect_to articles_path, notice: "成功しました"
ビュー(.erb)
<%= notice %>

##10. ステータスを指定 ページに遷移した際に、ステータスを指定することができる。

redirect_to パス, status: :シンボル

Railsドキュメント シンボル一覧

12
17
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
12
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?