どうも、resourcesとresourceの違いをよくわかっていなかったので、調べました。
【Rails】resourcesとresourceの違い
結論
resourcesと違って、resourceは…
- indexのルーティングが作成されない
- id付きのルーティングが作成されない
とりあえず分からなければ、resourcesを使っておけば良いんでは?と思います。
ちょっと詳しく
resourcesとresourceでは、作られるルーティングが違います。
resourcesの場合
Prefix Verb URI Pattern Controller#Action
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
resourceの場合
Prefix Verb URI Pattern Controller#Action
new_posts GET /posts/new(.:format) posts#new
edit_posts GET /posts/edit(.:format) posts#edit
posts GET /posts(.:format) posts#show
PATCH /posts(.:format) posts#update
PUT /posts(.:format) posts#update
DELETE /posts(.:format) posts#destroy
POST /posts(.:format) posts#create
作られるルーティングを見てもらえればわかりますが。resourceの方は、resourcesと違って、IDの入ったルーティングがないです。あとIndexページもないです。
じゃあどんな時にresourceって使うの?って話なのですが、結論を言うと複数人で使う予定のないページを作成する時ですね。
RailsでルーティングにIDを振っている理由は、複数人で使えるようにするためです。
ですが、自分だけ使えれば問題ないページもあります。例えば、自分のプロフィールを紹介するために作成したアプリなどです。
そんな時は、複数人で使うわけではないので、resourceで十分ですよという話ですかね。はい。以上です!