URL_FOR- und Routenverlust in Schienen 3
-
24-10-2019 - |
Frage
Ich habe eine Rails -Route eingerichtet wie:
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]
Auf diese Weise kann ich sagen /teams/cleveland-indians
Und es wird anrufen teams#show
mit :id => 'cleveland-indians'
. Funktioniert super. Mein Problem ist das url_for
Tut nicht genau das, was ich will. In meinen Ansichten/Teams/Indexansicht erhalte ich dieses Verhalten:
url_for(:id => "cleveland-indians") # => /teams/cleveland-indians/index
url_for(:id => "cleveland-indians", :action => :show) # => /teams/cleveland-indians/show
Natürlich verhält sich dieser zweite so, wie ich es will, aber ich möchte das unnötige loswerden /show
Am Ende. Ich weiß nicht viel darüber, wie diese Helfer funktionieren, aber ich hätte vermutet, dass es das wissen würde show
war die Standardaktion für ein Get mit einer angegebenen ID, genau wie die Routing -Engine. Wie auch immer, was ist der beste Weg für mich, mich darum zu kümmern? Oder mache ich einfach alles falsch?
Lösung
Die "Ressourcen" -Linie sollte Ihnen bereits die gewünschten Routen zur Verfügung stellen, damit Sie einfach die erste "Übereinstimmung" -Linie entfernen können.
Beachten Sie, dass Sie auch 'Teams_Path', 'Team_Path ("Cleveland-Indianer")' anstelle von 'url_for' verwenden können.