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 の違い
。