Teile des URL -Ergebniss von link_to in Schienen neu anordnen
-
23-10-2019 - |
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 question
S, 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!
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! :)