url_for einer benutzerdefinierten RESTful-Ressource (zusammengesetzter Schlüssel; nicht nur id)

Ausgehend von der folgenden Ressourcendefinition:

map.resources :posts, :except => [:show]
map.post '/:year/:month/:slug, :controller => :posts, :action => :show

Ich kann machenurl_for arbeite für mich mit dieser Syntax:

<%= link_to @post.title, post_url(:year => '2010', :month => '02', :slug => 'test') %>

Aber gibt es eine Möglichkeit, diese Arbeit zu machen?

<%= link_to @post.title, @post %>

Derzeit wird dieser Fehler ausgelöst:

No route matches {:year=>#<Post id: 1, title: "test", (...)>, :controller=>"posts", :action=>"show"}

Anscheinend wird das @post-Objekt an den ersten route-Parameter übergeben (scheint ein Rails-Bug zu sein ...). Aber kann ich das für mich erledigen? Ich werde diese Verwirrung mit hinzufügendefault_url_options ist eine Sackgasse.

Die Lösung, die nur in Rails 3.x funktioniert, ist in Ordnung, aber ich würde es vorziehen, keine Plugins zu verwenden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage