J'ai une route dans mon code qui ressemble à ceci:avec des URLs de routage par nom au lieu d'ID
map.app 'applications/:title_header', :controller => 'apps', :action => 'show'
J'ai aussi changé ma méthode d'exposition dans le contrôleur comme ceci:
@app = App.find_by_title_header(params[:title_header])
Si je tape applications/title
les choses fonctionnent bien. Si je tape applications/1
(Id valide), il échoue (comme prévu)
Cependant quand je suis en train d'utiliser les aides d'URL amicales, dans ce cas app_path(@app)
les URL générées ressemblent applications/1
. La seule façon de le faire fonctionner est de mettre app_path(@app.title_header)
. Il semble que si "il sait juste" que l'ID est ce qui est passé à partir de l'objet d'application qu'il devrait "savoir" qu'il devrait par défaut passer le nom à la place maintenant. De quoi ai-je besoin pour changer?
Alors, que se passe-t-il lorsque vous avez une adresse URL "1234" qui coïncide avec ID? – Zepplock
Vous supposez que l'application est répertoriée en tant que ressource dans routes.rb. Même alors, route utilisera la première entrée correspondante qui décrit l'URL demandée. – EmFi