Rails のルーティング
ルーティングを追加するとき、毎回調べているので少しずつまとめていこうかと思います。 等価な書き方が色々あるので絶対これというわけではありません。
scope
URI Pattern にのみ追加されます。
Rails.application.routes.draw do scope :user do resources :profile end end
➜ sample git:(master) ✗ be rake routes Prefix Verb URI Pattern Controller#Action profile_index GET /user/profile(.:format) profile#index POST /user/profile(.:format) profile#create new_profile GET /user/profile/new(.:format) profile#new edit_profile GET /user/profile/:id/edit(.:format) profile#edit profile GET /user/profile/:id(.:format) profile#show PATCH /user/profile/:id(.:format) profile#update PUT /user/profile/:id(.:format) profile#update DELETE /user/profile/:id(.:format) profile#destroy
scope module:
Controller#Action にのみ追加されます。
Rails.application.routes.draw do scope module: :user do resources :profile end end
➜ sample git:(master) ✗ be rake routes Prefix Verb URI Pattern Controller#Action profile_index GET /profile(.:format) user/profile#index POST /profile(.:format) user/profile#create new_profile GET /profile/new(.:format) user/profile#new edit_profile GET /profile/:id/edit(.:format) user/profile#edit profile GET /profile/:id(.:format) user/profile#show PATCH /profile/:id(.:format) user/profile#update PUT /profile/:id(.:format) user/profile#update DELETE /profile/:id(.:format) user/profile#destroy
scope as:
Prefix にのみ追加されます。
Rails.application.routes.draw do scope as: :user do resources :profile end end
➜ sample git:(master) ✗ be rake routes Prefix Verb URI Pattern Controller#Action user_profile_index GET /profile(.:format) profile#index POST /profile(.:format) profile#create new_user_profile GET /profile/new(.:format) profile#new edit_user_profile GET /profile/:id/edit(.:format) profile#edit user_profile GET /profile/:id(.:format) profile#show PATCH /profile/:id(.:format) profile#update PUT /profile/:id(.:format) profile#update DELETE /profile/:id(.:format) profile#destroy
scope と module: と as:
Prefix と URI Pattern と Controller#Action 全てに追加されます。
Rails.application.routes.draw do scope :user, module: :user, as: :user do resources :profile end end
➜ sample git:(master) ✗ be rake routes Prefix Verb URI Pattern Controller#Action user_profile_index GET /user/profile(.:format) user/profile#index POST /user/profile(.:format) user/profile#create new_user_profile GET /user/profile/new(.:format) user/profile#new edit_user_profile GET /user/profile/:id/edit(.:format) user/profile#edit user_profile GET /user/profile/:id(.:format) user/profile#show PATCH /user/profile/:id(.:format) user/profile#update PUT /user/profile/:id(.:format) user/profile#update DELETE /user/profile/:id(.:format) user/profile#destroy
namespace
Prefix と URI Pattern と Controller#Action 全てに追加されます。
( scope と module: と as: ) と同じ結果になります。
Rails.application.routes.draw do namespace :user do resources :profile end end
➜ sample git:(master) ✗ be rake routes Prefix Verb URI Pattern Controller#Action user_profile_index GET /user/profile(.:format) user/profile#index POST /user/profile(.:format) user/profile#create new_user_profile GET /user/profile/new(.:format) user/profile#new edit_user_profile GET /user/profile/:id/edit(.:format) user/profile#edit user_profile GET /user/profile/:id(.:format) user/profile#show PATCH /user/profile/:id(.:format) user/profile#update PUT /user/profile/:id(.:format) user/profile#update DELETE /user/profile/:id(.:format) user/profile#destroy