Nous avons donc un système hérité qui suit les endroits avec des ID comme "Europe/France/Paris", et je construis une façade Rails pour en faire des URLs comme http: // foobar/places/Europe/France/Paris. Cette exigence n'est pas négociable, le nombre de niveaux possibles en illimité, et nous ne pouvons pas échapper aux barres obliques.Ruby on Rails: Routage pour une arborescence de lieux
Mise en place routes.rb pour http://foobar/places/Europe est trivial:
map.resources :places
... mais http: // foobar/lieux/Europe/France se plaint "Aucune action a répondu à l'Europe". J'ai essayé:
map.connect '/places/:id', :controller => 'places', :action => 'show'
... mais cela donne le même résultat, car apparemment le: id se termine au premier '/'. Comment puis-je faire en sorte que l'ID couvre tout et n'importe quoi après les "lieux"?
Brillant, ça marche presque! Le seul problème est que le contenu est maintenant rendu en HTML, même si j'essaye de le forcer avec un suffixe ".xml"? J'utilise la norme respond_to do | format | bloc. – jpatokal
Il ressemble à la globbing de route avec: le support de format est un problème connu - c'est, cela ne fonctionne pas, comme vous l'avez découvert. Le bug/patch est ici discuté ici: http://bit.ly/5LICLH mais il semble que ce ne soit pas dans la version actuelle de Rails. Puisque vous n'avez aucun contrôle sur la partie URL (la route), le mieux que je puisse penser est d'ajouter un paramètre de chaîne de requête (? Format = xml ou? Format = json) que vous pouvez détecter dans votre contrôleur et agir en conséquence. Sinon, on dirait que vous êtes SOL –