并非所有成员路由都在查询字符串中获取id

时间:2016-05-09 07:53:26

标签: 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 :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。那是为什么?

1 个答案:

答案 0 :(得分:2)

您的问题出在resource(单数)与resources(复数)之间。您会注意到,每当您的路线(测试,联系,约会)中有:id时,就会使用资源和其他资源来声明它。

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

您可以在此处找到更多信息:Difference between resource and resources methods