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
を使ったときに生成されるルートを見ていきましょう。
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
を例にとって説明します。ユーザーのプロファイルは、ユーザーがログインしているときに操作されるエンティティ (リソース) であることが想定されています。
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 の違い
。