概要
Railsでよく使いそうなルーティングのやり方について記述します。
基本的なルーティング
ルーティングはconfig/routes.rb
ファイルで定義します。最も基本的な形式は以下の通りです。
get 'products' => 'products#index'
これはHTTP GETリクエストをproducts
パスに送ると、ProductsController
のindex
アクションが呼び出されることを意味します。
別の書き方としてto:
を用いた表現もあり、次のように書くことも可能です。
get 'products', to: 'products#index'
リソースルーティング
RESTfulなリソースに対する標準的なCRUD操作を設定するための短縮形です。
resources :products
この一行で、以下の7つのルーティングが自動的に生成されます。
- index:
GET /products
- show:
GET /products/:id
- new:
GET /products/new
- create:
POST /products
- edit:
GET /products/:id/edit
- update:
PATCH/PUT /products/:id
- destroy:
DELETE /products/:id
ネストしたリソース
あるリソースが他のリソースに従属する場合、リソースをネストすることができます。
resources :products do
resources :comments
end
この場合、comments
はproducts
にネストされ、コメントを一意に特定するためにはその親となるプロダクトのIDが必要になります。
名前付きルート
特定のルートに名前を付けることができます。これにより、ビューやコントローラ内でそのルートを簡単に参照することができます。
get 'products/:id/purchase' => 'products#purchase', as: 'purchase'
この場合、purchase_path
というヘルパーメソッドが自動的に生成され、ビュー内で使用することができます。
to:
を用いた書き方であれば、次のようになります。
get 'products/:id/purchase', to: 'products#purchase', as: 'purchase'
ルートの制約
ルートには制約を設けることが可能です。例えば、パラメータに特定の形式を強制することができます。
get 'products/:id' => 'products#show', id: /\d+/
この場合、:id
パラメータは数値でなければならないという制約が設けられています。
以上がRuby on Railsでよく使うルーティングの基本知識になります。適切なルーティング設定により、アプリケーションの動作を効率的にコントロールすることができます。