某些具有特定名称的成员路由未在查询字符串中添加预期的:id
。
这些路线:
resources :tests do
member do
get :foo
end
end
resources :contacts do
member do
get :foo
end
end
resource :tasks do
member do
get :foo
end
end
resource :fruits do
member do
get :foo
end
end
resource :cars do
member do
get :foo
end
end
resources :appointments do
member do
get :foo
end
end
产生这个:
foo_test GET /tests/:id/foo(.:format) tests#foo
foo_contact GET /contacts/:id/foo(.:format) contacts#foo
foo_tasks GET /tasks/foo(.:format) tasks#foo
foo_fruits GET /fruits/foo(.:format) fruits#foo
foo_cars GET /cars/foo(.:format) cars#foo
foo_appointment GET /appointments/:id/foo(.:format) appointments#foo
任务,水果和汽车没有id。那是为什么?
答案 0 :(得分:2)
您的问题出在resource
(单数)与resources
(复数)之间。您会注意到,每当您的路线(测试,联系,约会)中有:id
时,就会使用资源和其他资源来声明它。
通过使用resource
(单数),您隐含地说您只有一种此类型的资源,因此不需要和ID,这就是为什么它不存在于此。
您可以在此处找到更多信息:Difference between resource and resources methods