2012-04-09 9 views
2

Ich habe schon so etwas wie diese:Individuelle Route Pfade für nur bestimmte Aktionen

resources :users, :path => '', :path_names => { :edit => 'settings' } do 
    resources :photos 
end 

Was mir ein gutes Stück der Routen gibt, gibt ich wirklich will.

/{user_id}/settings #does everything "edit" did 
/{user_id}/photos #lists photos for certain user 

Aber mein letzter Eintrag auf meiner Routing Wunschliste ist ‚Nutzer‘, wie mein Index Weg zurück zu bringen, in eine einfallsreich und RESTful Art und Weise. Denn gerade jetzt geht der Index an die Wurzel URl verloren, die Vorrang hat. Im Wesentlichen möchte ich :path => '' NICHT auf die Indexaktion anwenden. Ich habe versucht, :except => [:index] hinzuzufügen, aber ActiveRecord versucht immer noch, /users/ als eine ID von "Benutzer" übereinzustimmen. (Welche sind alphanumerisch, so dass Beschränkungen hier nicht helfen.)

Was soll ich als nächstes versuchen? Oder sollte ich mich anschnallen und individuelle "Match" -Aussagen schreiben? Ich habe das Gefühl, dass es einen Weg geben sollte, dies aus der Ressource zu bauen ...

Antwort

3

Was ich am Ende getan habe, war einfach eine zweite Routing-Regel zu schreiben (ich überlegte dies). Da ich in meinen Routen root definiert hatte, wurde '/' bereits für index, new und create überschrieben.

Also nur durch das Umschreiben der Regeln für diejenigen in einer separaten Zeile, war es eigentlich ziemlich einfach.

resources :users, :path => '/users', :only => [:index, :new, :create] 
resources :users, :path => '', :path_names => { :edit => 'settings' } do 
    resources :photos 
end 
Verwandte Themen