Rails routes difference between resource and resources

Rails provides RESTful routing for resources.Routes can either define single resource or plural resources to generate routes of application.

ルーター生成時にresourceまたはresourcesを選択する際に考慮しなければならない論理的違いがあります。

Use of resources in Rails routes

Railsルートにresourcesを使ったときに生成されるルートを見ていきましょう。

resources :products

に使用されます。

HTTP Verb Path Controller#Action Used for
GET /products products#index 全製品の一覧を表示する
GET /products/new products#new 新しい製品を作成するためのHTMLフォームを返す
POST /products products#create 新しい製品を作成する
GET /products/:id products#show 特定の製品を表示する
GET /products/:id/edit products#edit 製品の編集用 HTML フォームを戻す
PATCH/PUT /products/.Item products/:id/edit products/:edit products/:id/edit GET
products/:edit products#update 特定の製品を更新する
DELETE /products/.ID products#update products#update products#update{4271> products#destroy 特定の製品を削除する

Rails routesでのリソースの使用

Railsアプリケーションでウェブサイトにログインしたユーザーのprofileを例にとって説明します。ユーザーのプロファイルは、ユーザーがログインしているときに操作されるエンティティ (リソース) であることが想定されています。

resource :profile
HTTP Verb Path Controller#Action 使用例
GET /profile/new profiles#new return an HTML
POST /profile profiles#create 新しいプロファイルを作成する
GET /profile profiles#show 表示する プロファイルを表示します。 特定のプロフィール
GET /profile/edit profiles#edit プロフィール編集用の HTML フォームを返す
PATCH/PUT /profile profiles#update update a specific profile
DELETE /profile profiles#destroy delete a specific profile

特異リソースルートにはリソースのIDはないことがわかっています。

Rails ガイドでは、次のように提案しています:,

時には、クライアントが ID を参照せずに常に検索するリソースがあることがあります。 たとえば、/profileに現在ログインしているユーザーのプロファイルを常に表示するようにしたいとします。 この場合、単一リソースを使用できます。

Resource と Resource の違い