Railsのルーティングはresourcesで定義できますが、それ以外の方法として、resource(単数形)を使った方法もあるのでそれらについてまとめました。
resourcesでルーティングを作成する場合
Rails.application.routes.draw do
resources :publishers
end
この場合のルーティングは以下になる。
Prefix Verb URI Pattern Controller#Action
publishers GET /publishers(.:format) publishers#index
POST /publishers(.:format) publishers#create
new_publisher GET /publishers/new(.:format) publishers#new
edit_publisher GET /publishers/:id/edit(.:format) publishers#edit
publisher GET /publishers/:id(.:format) publishers#show
PATCH /publishers/:id(.:format) publishers#update
PUT /publishers/:id(.:format) publishers#update
DELETE /publishers/:id(.:format) publishers#destroy
このresourcesは、アプリケーション上に複数存在するリソースを扱う場合に用いるものである。
これに対し、
ログインユーザが参照するプロフィールのような、一人のユーザから見てアプリケーション上1つしか存在しないリソースに対しては、複数形でなく単数形でresourceと定義することができる。
Rails.application.routes.draw do
resource :profile
end
この場合のルーティングは以下になる
Prefix Verb URI Pattern Controller#Action
new_profile GET /profile/new(.:format) profiles#new
edit_profile GET /profile/edit(.:format) profiles#edit
profile GET /profile(.:format) profiles#show
PATCH /profile(.:format) profiles#update
PUT /profile(.:format) profiles#update
DELETE /profile(.:format) profiles#destroy
POST /profile(.:format) profiles#create
以下2点が異なります。
- indexが無くなる
- idが無くなる。プロフィールは必ずログインのユーザに紐付くため不要
使い分けできるといいですね!!
コメント