2016-05-09 4 views
1

Einige Mitgliedsrouten mit bestimmten Namen werden nicht mit der erwarteten :id innerhalb der Abfragezeichenfolge hinzugefügt. Diese Routen:Nicht alle Mitgliedsrouten erhalten eine ID in der Abfragezeichenfolge

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 

Dies erzeugt:

  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 

Aufgaben, Obst und Autos keine ID haben. Warum das?

Antwort

2

Ihr Problem ist in resource (singular) vs resources (Plural). Sie werden feststellen, dass jedes Mal, wenn Sie eine :id in Ihrer Route (Test, Kontakt, Termine) haben, wird es mit Ressourcen und anderweitig mit Ressource erklärt.

Mit resource (Singular) sagen Sie implizit, dass Sie nur eine Ressource dieses Typs haben, so dass es keine Notwendigkeit und ID gibt, deshalb ist es hier nicht vorhanden.

können Sie mehr Infos finden Sie hier: Difference between resource and resources methods

+0

: facepalm. Ich kann nicht glauben, dass ich das verpasst habe. –

Verwandte Themen