Query Parameter mit url_for?
url_for([:edit, @post])
arbeitet und die Erzeugung /comments/123/edit
. Jetzt muss ich eine Abfrage hinzufügen-parameter, so dass anstelle von
/comments/123/edit
ist es
/comments/123/edit?qp=asdf
Versuchte ich url_for([:edit, @post], :qp => "asdf")
aber nicht gehen.
InformationsquelleAutor der Frage randomguy | 2011-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Benannte Routen.
InformationsquelleAutor der Antwort Simone Carletti
Können Sie
polymorphic_path
InformationsquelleAutor der Antwort epochwolf
Können Sie pass
params
zuurl_for
. Kasse es im sourcecode: https://github.com/rails/rails/blob/d891c19066bba3a614a27a92d55968174738e755/actionpack/lib/action_dispatch/routing/route_set.rb#L675InformationsquelleAutor der Antwort Dmitry Polushkin
Den Antwort von Simone Carletti tatsächlich funktioniert, aber es gibt Zeiten, wenn man will, dass die URL erstellen unter Verwendung von Objekten wie beschrieben in der Rails-routing-Richtlinien, und sich nicht auf die
_path
Helfer.Sind die Antworten aus beiden Ben und Grasnarben versuchen genau zu beschreiben, wie dies zu tun, aber für mich ist die syntax verwendet, führt zu einer Fehlermeldung (mit Schienen 4.2.2, die hat das gleiche Verhalten wie 4.2.4, das ist die aktuelle stabile Version dieser Antwort).
Die korrekte syntax für das erstellen einer URL/Pfad von Objekten, während auch die übergabe von Parametern werden sollte, im Gegensatz zu einem verschachtelte array, sondern ein flaches array mit den URL-Komponenten, plus einen hash als das Letzte element:
url_for([:edit, @post, my_parameter: "parameter_value"])
Hier die ersten beiden Elemente analysiert werden, wie die Komponenten für die URL, und der hash als parameter(s) für die URL.
Funktioniert das auch mit
link_to
:link_to( "Link Text", [:edit, @post, my_parameter: "parameter_value"])
Wenn ich rufe
url_for
wie vorgeschlagen von Ben & Grasnarben:url_for([[:edit, @post], my_parameter: "parameter_value"])
Bekomme ich die folgende Fehlermeldung:
ActionView::Template::Error (undefined method 'to_model' for #<Array:0x007f5151f87240>)
Die Ablaufverfolgung zeigt, dass dies aufgerufen wird, von
polymorphic_routes.rb
imActionDispatch::Routing
überurl_for
ausrouting_url_for.rb
(ActionView::RoutingUrlFor
):Das problem ist, dass es erwartet, ein array von URL-Komponenten (zB. Symbole, die Modell-Objekte, etc), nicht ein array mit einem anderen array.
Blick auf die entsprechenden code von
routing_url_for.rb
können wir sehen, dass, wenn er erhält ein array hat einen hash als das Letzte element, es wird dann Extrakt den hash und behandeln Sie als Parameter, verlassen dann einfach das array mit den URL-Komponenten.Weshalb die flachen array mit einem hash als das Letzte element arbeitet, und der verschachtelte Arrays nicht.
InformationsquelleAutor der Antwort Michael Smart
In rails 4 Sie können dies tun:
url_for([[:edit, @post], :qp => "asdf"])
Beachten Sie die zusätzlichen array-syntax.
InformationsquelleAutor der Antwort Mark Swardstrom