Wie URL-Parameter aus einer URL mit Ruby oder Rails extrahieren?
Habe ich einige URLs, wie
http://www.example.com/something?param1=value1¶m2=value2¶m3=value3
und ich möchte zum extrahieren der Parameter aus diesen URLs und Sie in einen Hash. Natürlich könnte ich reguläre Ausdrücke verwenden, aber ich wurde gerade gefragt ob es einfachere Möglichkeiten, das zu tun, mit Ruby oder Rails. Ich habe nicht gefunden, was in der Ruby-Modul URI
aber vielleicht habe ich etwas verpasst.
In der Tat, ich brauche eine Methode, die das tun würden:
extract_parameters_from_url("http://www.example.com/something?param1=value1¶m2=value2¶m3=value3")
#=> {:param1 => 'value1', :param2 => 'value2', :param3 => 'value3'}
Hätten Sie einige Ratschläge?
Kommentar zu dem Problem
Hash[*string.split('&').collect{|i|i.split('=')}.flatten]
würde auch funktionieren, aber es ist wohl die schlechteste option für diesen Fall. Aber immer noch finden Sie vielleicht dieses snippet interessant. (Posting als Kommentar, da ich nicht der Ansicht, diese eine Antwort :-)) InformationsquelleAutor der Frage Flackou | 2010-03-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Sie wollen wiederum alle angegebenen URL-string in einen HASH?
Können Sie versuchen, http://www.ruby-doc.org/stdlib/libdoc/cgi/rdoc/classes/CGI.html#M000075
gibt
InformationsquelleAutor der Antwort Sniper
Fand ich mich brauchen die gleiche Sache für ein Aktuelles Projekt.
Aufbauend auf Levi ' s-Lösung, hier ist eine sauberere und schnellere Methode:
InformationsquelleAutor der Antwort Arthur Gunn
Nur Verbessert mit Levi Antwort oben
Für einen string wie oben, url, wird es wieder
InformationsquelleAutor der Antwort rtdp
Für eine Reine Ruby-Lösung kombinieren
URI.parse
mitCGI.parse
(dies kann verwendet werden, auch wenn Rails/Rack etc. sind nicht erforderlich):InformationsquelleAutor der Antwort alup
Gibt mehr als einer Möglichkeiten, um Ihr problem zu lösen. Anderen dir gezeigt hat, die einige tricks. Ich kenne einen anderen trick. Hier ist mein Versuch :-
Lesen Sie die Methode docomentation von
::decode_www_form
.InformationsquelleAutor der Antwort Arup Rakshit
Check-out die adressierbar gem - ein beliebter Ersatz für Ruby ' s URI-Modul, die Abfrage macht das Parsen einfach:
(Auch scheinbar Griffe param encoding/decoding, im Gegensatz zu URI)
InformationsquelleAutor der Antwort Yarin
In Ihrem Controller, sollten Sie in der Lage sein, um Zugriff auf ein dictionary (hash) genannt
params
. Also, wenn Sie wissen, was die Namen der einzelnen query-parameter ist nur dann nichtparams[:param1]
drauf zugreifen... Wenn Sie nicht wissen, was die Namen der Parameter sind, könnten Sie durchqueren das Wörterbuch und die Schlüssel.Einige einfache Beispiele hier.
InformationsquelleAutor der Antwort kafuchau