Frage

So mache ich es jetzt:

link_to "Profile", :controller => "profiles", :action => "asked", :id => @profile
# => <a href="/profiles/asked/1">Profile</a>

Ist es sinnvoller für die URL? <a href="/profiles/1/asked">Profile</a>? Profile 1 fragte eine Reihe von Anzahl von questionS, es ist für mich für die URL mehr Sinn, auszusehen: /:controller/:id/:action.

Wenn Sie zustimmen, wie leisten ich das?

Wenn Sie nicht zustimmen, lassen Sie mich bitte wissen, warum. (Ich bin neu bei Ruby on Rails, also gewöhnt ich mich immer noch an MVC -Konventionen.)

Jeder Rat wäre großartig!

War es hilfreich?

Lösung

Ja, du kannst! Dies ist der Fall einer benannten Route! Alles, was Sie tun müssen, ist in Ihrer Route.RB Fügen Sie diesen Link hinzu:

map.asked 'profiles/:id/asked', :controller => 'profiles', :action => 'asked'

Diese Route kann mit gefragtem_path (: id => @profile) aufgerufen werden. Ändern Sie einfach Ihren Link_to in den Ansichten in:

link_to "Profile", asked_path(:id => @profile)

Ich verdiene keine Aufgabe dafür, als ich sie gerade aus der Datei Routen.RB selbst herausgezogen habe. Wenn Sie sich die autogenerierten Routen genau angesehen haben. RB werden Sie Folgendes sehen:

  # Sample of named route:
  #   map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase'
  # This route can be invoked with purchase_url(:id => product.id)

Wenn Sie es generischer machen möchten, habe ich es nicht ausprobiert. Aber ich denke, es sollte trotzdem funktionieren:

map.routeany ":controller/:id/:action"

und in der Ansicht:

link_to "Route to something...", routeany_path(:controller => "somecontroller", :action => "someaction", :id => @somecontroller)

Wie auch immer, Jubel! :)

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