#はじめに
今回はRaiilsでRESTfulなルート設計を定義するメソッド
- resourcesメソッド
- resourceメソッド
についてまとめます。
RailsのルーティングとRESTfulについてはこちらにもまとめていますので、よかったら見てください。
Rails ルーティングの基礎とRESTful
#resourcesメソッド
RESTfulなルート設計を定義するメソッドです。
「config/routes.rb」で呼び出します。
Rails.application.routes.draw do
resources :users
end
ターミナルで「rake routes」を実行し、ルーティングを表示すると次のようになります。
※見やすいように多少整形しています
Prefix Verb URI Pattern Controller#Action
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
「resources :users」の一行だけで、次のルートが定義されていることがわかります。
URL | アクション | HTTPメソッド | 動作 |
---|---|---|---|
/users(.:format) | index | GET | ユーザ一覧画面を表示 |
/users(.:format) | create | POST | ユーザの登録処理 |
/users/new(.:format) | new | GET | ユーザの登録画面を表示 |
/users/:id/edit(.:format) | edit | GET | ユーザの編集画面を表示 |
/users/:id(.:format) | show | GET | ユーザの詳細画面を表示 |
/users/:id(.:format) | update | PATCH | ユーザの更新処理 |
/users/:id(.:format) | update | PUT | ユーザの更新処理 |
/users/:id(.:format) | destroy | DELETE | ユーザの削除処理 |
また、resourcesメソッドは名前付きルートも自動で生成します。 |
名前付きパス(_path) | 名前付きパス(_path) | 対応するパス |
---|---|---|
users_path | users_url | /users |
user_path(id) | user_url(id) | /users/:id |
new_user_path | new_user_url | /users/new |
edit_user_path(id) | edit_user_url(id) | /users/:id/edit |
#resourceメソッド | ||
resourcesメソッドは複数のリソースに対応したルートを定義したのに対し、 | ||
resourceメソッドは単一のリソースに対応したルートを定義します。 |
Rails.application.routes.draw do
resource :user
end
ターミナルで「rake routes」を実行し、ルーティングを表示すると次のようになります。
※見やすいように多少整形しています
Prefix Verb URI Pattern Controller#Action
new_users GET /user/new(.:format) users#new
edit_users GET /user/edit(.:format) users#edit
users GET /user(.:format) users#show
PATCH /user(.:format) users#update
PUT /user(.:format) users#update
DELETE /user(.:format) users#destroy
POST /user(.:format) users#create
URL | アクション | HTTPメソッド | 動作 |
---|---|---|---|
/user/new(.:format) | new | GET | ユーザの登録画面を表示 |
/user/edit(.:format) | edit | GET | ユーザの編集画面を表示 |
/user(.:format) | show | GET | ユーザの詳細画面を表示 |
/user(.:format) | update | PATCH | ユーザの更新処理 |
/user(.:format) | update | PUT | ユーザの更新処理 |
/user(.:format) | destroy | DELETE | ユーザの削除処理 |
/user(.:format) | create | POST | ユーザの登録処理 |
resourcesメソッドとは異なる部分があることが分かります。
- アクションのindexに対応するルートがない
- idパラメータを要求していない
また、 resourceメソッドでもコントローラは複数形になっています。
resourcesメソッドと同様に、resourceメソッドも名前付きルートを自動で生成します。
名前付きパス(_path) | 名前付きパス(_path) | 対応するパス |
---|---|---|
user_path | user_url | /users |
new_user_path | new_user_url | /users/new |
edit_user_path | edit_user_url | /users/edit |
#おわりに
resourcesメソッドとresourceメソッドについてまとめましたが、
他にもルートパラメータに制約をかけたり、フォーマットに対応しないようにしたりなど
色々と定義できるようです。
その辺りも今後、調べてまとめてみたいと思います。