やりたいこと
projectsに複数のcategoryをぶら下げ、category_idごとにビューを出すために
projects/categories/:id
↑こういうパスを作りたい。
実装方法
前準備
- routes.rbにprojectsのリソースを追加。
- projectsリソースにcollection do ~ endをネストさせる。
routes.rb
resources :projects do
collection do
//HTTPメソッド名 '生成したいパス'
end
end
生成したいパスを指定する
上記の「生成したいパス」に以下を記述する。
get 'categories/:id', to: 'projects#category'
説明
- resourcesで生成される7つのルーティング以外のものを生成したいときに
collection
を使用。(似たようなものにmember
がありますがここでは省略します) -
collection
内にHTTPメソッド名 'パス名/:id' to: 'コントローラ名#アクション名'
を記述。
結果
ターミナル
Prefix Verb URI Pattern Controller#Action
//省略//
GET /projects/categories/:id(.:format) projects#category
できました。
prefix生成されないのはなんでだろう・・・?