3 votes

Des chemins d'accès personnalisés pour certaines actions seulement

J'ai déjà quelque chose comme ça :

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

Ce qui me donne une bonne partie des routes que je veux VRAIMENT.

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

Mais le dernier élément de ma liste de souhaits en matière de routage est le retour de "users" comme chemin d'accès à l'index, d'une manière ingénieuse et RESTful. Car actuellement, l'index est perdu au profit de l'URl racine qui a la priorité. Donc, essentiellement, je voudrais :path => '' pour NE PAS s'appliquer à l'action d'index. J'ai essayé d'ajouter :except => [:index] mais ActiveRecord essaie toujours de faire correspondre /users/ comme un id de "users". (Qui sont alphanumériques, donc les contraintes ne sont pas utiles ici).

Que dois-je essayer ensuite ? Ou dois-je m'atteler à la rédaction de déclarations de correspondance individuelles ? J'ai l'impression qu'il devrait y avoir un moyen de construire cela à partir de la ressource...

4voto

Kyle Macey Points 4615

Ce que j'ai fini par faire, c'est simplement écrire une deuxième règle de routage (j'ai trop réfléchi). Puisque j'avais défini root dans mes itinéraires, '/' était déjà surchargé pour index, new, et create.

Donc, en réécrivant les règles pour ces derniers sur une ligne séparée, c'était en fait assez facile.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X