4 Stimmen

Wie kann ich diese widersprüchlichen Rails-Routen auflösen?

Ich habe einen Eintrag in meiner routes.rb, der wie folgt aussieht:

resources :baskets, :shallow => true, :only => :show
  resource :owned, :only => [:create, :destroy]
end

get '/baskets/owned', :to => 'owners#index'

Dadurch entstehen Routen, die wie folgt aussehen:

basket        GET    /baskets/:id(.:format)
baskets_owned GET    /baskets/owned(.:format)
# ...

Aber wenn ich jetzt /baskets/owned aufrufe, erhalte ich dies:

Started GET "/baskets/owned" for 10.0.1.2 at 2011-06-09 10:31:33 -0400
  Processing by BasketsController#show as JSON
  Parameters: {"id"=>"owned"}

Wie lässt sich dieser Routing-Konflikt am einfachsten lösen?

8voto

Chowlett Punkte 44504

Rails gleicht Routen ab, beginnend mit der ersten definierten Route und dann abwärts, bis es eine Übereinstimmung findet; die erste übereinstimmende Route wird verwendet und alle anderen werden ignoriert.

Die Lösung für Ihr Problem besteht darin, dass Sie die get '/baskets/owned' Route vor der resources Route.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X