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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top