2010-12-06 12 views
0

Als Teil meiner Vorlage zeige ich einige automatische Links, die im application_controller erstellt werden. Einige dieser Links bieten eine Navigation direkt von einer Show-Seite zu einer entsprechenden Bearbeitungsseite und einige ähnliche Dinge.Erstellen eines Schienenpfades für eine bekannte Aktion basierend auf dem aktuellen Datensatz

Mein aktueller Code enthält:

nav_links << {:name=>:edit,:url=>url_for(:action => :edit)} 

Dieser große Werke außer ich Kind Ressourcen in meine routes.rb-Datei definiert haben.

In diesem Fall statt zu navigieren:

a/1/b/2/edit 

Es navigiert zu

b/2/edit 

, die keine gültige Route ist.

Alle Ideen, wie dies zu erreichen wäre, würden sehr geschätzt werden. Ich bin daran interessiert, Sonderfälle wo möglich zu vermeiden.

Antwort

0

Ein wenig verwirrt - warum nicht einfach die Routen Ressourcen für Sie definieren. Da Sie "Kinderressource" erwähnt haben, kann ich annehmen, dass Sie diese Ressourcen deklariert haben? Wenn ja - Sie eine Vielzahl von Routen für Sie da ...

  • Feuer off ‚Rake Routen‘ von der Kommandozeile
  • haben sollten Sie Ihre Route finden
  • Es wird höchstwahrscheinlich zwei Argumente nehmen und in etwa so aussehen (grob):

    edit_a_b GET/a /: a_id/b /: id

  • verwenden Sie einfach edit_a_b_url (@a, @b)

Hoffe das hilft.

+0

Weil ich dies in Application Controller mache, wird dieser Code für jeden Controller ausgeführt, und so muss ich die Editieraktion für den aktuellen Controller finden, nicht bekannt. – Leo