Entfernen einen Teil einer URL mit Rubin
Entfernen der query-string aus der URL im Ruby getan werden könnte, wie diese:
url.split('?')[0]
Wo url wird die komplette URL einschließlich der query-string (z.B. url = http://www.domain.extension/folder?schnoo=schnok&foo=bar
).
Gibt es einen schnelleren Weg, dies zu tun, d.h. ohne Verwendung von split, sondern mit Schienen?
edit: das Ziel ist Die Weiterleitung von http://www.domain.extension/folder?schnoo=schnok&foo=bar
zu http://www.domain.extension/folder
.
EDIT: ich verwendet:
url = 'http://www.domain.extension/folder?schnoo=schnok&foo=bar'
parsed_url = URI.parse(url)
new_url = parsed_url.scheme+"://"+parsed_url.host+parsed_url.path
- Ich bin nicht sicher, ob ich völlig verstehen, Ihr Ziel. Wollen Sie extrahieren von Parametern aus dem request im controller?
- Ist dies die URL der aktuellen Anforderung, oder nur eine völlig willkürliche URL?
- Sie müssen Sie auf port hinzufügen, wenn vorhanden (und nicht 80):
new_url = "#{parsed_url.scheme}://#{parsed_url.host}#{parsed_url.port != 80 ? (':'+parsed_url.port) : ''}#{parsed_url.path}"
+parsed_url.port
funktionieren nicht ohne explizite Konvertierung in string-ersten. Verwenden+parsed_url.port.to_s
statt.- das ist richtig, nicht getestet, sollte
(':'+parsed_url.port.to_s)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werfen Sie einen Blick auf die : how to get-query-string aus der übergebenen url in ruby on rails
Einfacher zu Lesen und schwerer zu vermasseln, wenn Sie analysieren und setzen
fragment
&query
zunil
statt des Wiederaufbaus der URL.Können Sie die Leistung erhalten, mit Regex
Wahrscheinlich nicht brauchen, um split-url. Wenn Sie auf diese link, Sie werden übergeben Sie zwei Parameter zur back-end:
http://www.domain.extension/folder?schnoo=schnok&foo=bar
params[:schnoo]=schnok
params[:foo]=bar
Versuchen, zu überwachen, melden und du wirst Sie sehen, dann können Sie Sie in controller direkt.