2.3 その他
リダイレクトを設定する
redirect
を設定すると特定ルーティングにリクエストが来た時にリダイレクトさせることができます。
このリダイレクトはHTTPステータスが301
になります。
/users
を/creators
にリダイレクトさせる
Rails.application.routes.draw do
get '/users', to: redirect('/creators')
end
パラメータを再利用してリダイレクトさせる
Rails.application.routes.draw do
get '/users/:id', to: redirect('/creators/%{id}')
end
ワイルドカードを利用する
ルーティングにワイルドカードを利用することで一部をあらゆるパラメータをマッチさせることができます。
chapter
ワイルドカードを設定
Rails.application.routes.draw do
get '/books/*chapter', to: 'books#sections'
end
このルーティングではparams[:chapter]
はあらゆるものにマッチします。
例)
パス | params[:chapter] |
---|---|
/books/how-to-use-bundler |
'how-to-use-bundler' |
プレフィックスをつける
:as
オプションでプレフィックスをつけることができます。
admin
スコープ内のposts
リソースにadmin
プレフィックスを追加
Rails.application.routes.draw do
scope 'admin', as: 'admin' do
resources :posts
end
end
生成されるルーティングは以下になります。
メソッド | パス | コントローラとアクション | ヘルパー |
---|---|---|---|
GET | /admin/posts |
posts#index | admin_posts_path |
GET | /admin/posts/new |
posts#new | new_admin_post_path |
POST | /admin/posts |
posts#create | admin_posts_path |
GET | /admin/posts/:id |
posts#show | admin_post_path(:id) |
GET | /admin/posts/:id/edit |
posts#edit | edit_admin_post_path(:id) |
PATCH/PUT | /admin/posts/:id |
posts#update | admin_post_path(:id) |
DELETE | /admin/posts/:id |
posts#destroy | admin_post_path(:id) |
定義したルーティングを確認する
定義済みルーティング
Rails.application.routes.draw do
resources :posts do
resources :comments
end
get 'settings', to: 'users#settings'
end
ルーティング一覧を表示するコマンド
$ rails routes
# 結果
Prefix Verb URI Pattern Controller#Action
post_comments GET /posts/:post_id/comments(.:format) comments#index
POST /posts/:post_id/comments(.:format) comments#create
new_post_comment GET /posts/:post_id/comments/new(.:format) comments#new
edit_post_comment GET /posts/:post_id/comments/:id/edit(.:format) comments#edit
post_comment GET /posts/:post_id/comments/:id(.:format) comments#show
PATCH /posts/:post_id/comments/:id(.:format) comments#update
PUT /posts/:post_id/comments/:id(.:format) comments#update
DELETE /posts/:post_id/comments/:id(.:format) comments#destroy
posts GET /posts(.:format) posts#index
POST /posts(.:format) posts#create
new_post GET /posts/new(.:format) posts#new
edit_post GET /posts/:id/edit(.:format) posts#edit
post GET /posts/:id(.:format) posts#show
PATCH /posts/:id(.:format) posts#update
PUT /posts/:id(.:format) posts#update
DELETE /posts/:id(.:format) posts#destroy
settings GET /settings(.:format) users#settings
ブラウザでルーティングを確認する
ローカル環境でRailsが動くのであればhttp://localhost:3000/rails/info/routesにアクセスすることで ルーティングを確認することができます。