#【Ruby on Rails】redirect_toメソッドの使い方まとめ
Railsにビルドインされているredirect_toメソッドを使うことで、action内でページ遷移の設定をすることができる。
▼記述
redirect_to パス
パスの指定方法は複数ある。
- pathで指定
- アクション名で指定
- コントローラー名で指定
- コントローラー名とアクション名で指定
- コントローラー名とアクション名とid名で指定
- URLで指定
- model名(クラス)で指定
- パラメータで指定
- メッセージを指定
- ステータスを指定
##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: :シンボル