url_for et les valeurs par défaut de routage dans des rails 3
-
24-10-2019 - |
Question
J'ai mis un rails la route vers le haut comme:
match ':controller/:id/:action'
# match 'teams/:id' => "teams#show" # doesn't have any additional effect, which makes sense to me
resources :teams, :only => [:index, :show]
De cette façon, je peux dire /teams/cleveland-indians
et il appellera teams#show
avec :id => 'cleveland-indians'
. Fonctionne très bien. Mon problème est que url_for
ne fait pas exactement ce que je veux. Dans mon point de vue / équipes / vue index, je reçois ce comportement:
url_for(:id => "cleveland-indians") # => /teams/cleveland-indians/index
url_for(:id => "cleveland-indians", :action => :show) # => /teams/cleveland-indians/show
Bien sûr que deuxième se comporte de la façon dont je veux, mais je voudrais vous débarrasser de la /show
inutile à la fin. Je ne sais pas beaucoup sur la façon dont ces aides fonctionnent, mais je l'aurais deviné ne savait pas que show
était l'action par défaut pour un GET avec un identifiant spécifié, même que le moteur de routage fait. Quoi qu'il en soit, quelle est la meilleure façon pour moi de prendre soin de cela? Ou suis-je fais juste tout faux?
La solution
ligne «ressources vous devez fournir déjà les routes que vous voulez sans doute pour que vous puissiez simplement supprimer la première ligne « match ».
Notez que vous pouvez également utiliser 'teams_path', 'team_path ( "cleveland-indians") au lieu de' 'url_for'.