Ruby on rails 并非所有成员路由都在querystring中获得id

Ruby on rails 并非所有成员路由都在querystring中获得id,ruby-on-rails,rails-routing,Ruby On Rails,Rails Routing,某些具有特定名称的成员路由未在查询字符串中添加预期的: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 :f

某些具有特定名称的成员路由未在查询字符串中添加预期的
: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。这是为什么?

您的问题在于
资源
(单数)与
资源
(复数)。您会注意到,每次在您的路线(测试、联系、约会)中有一个
:id
,它都是使用资源或使用资源声明的

通过使用
资源
(单数),您隐含地说您只有一个这种类型的资源,因此不需要和id,这就是为什么它不在这里


您可以在此处找到更多信息:

:facepalm。真不敢相信我错过了。