ruby-on-rails - headers - ruby on rails request
Wie bekomme ich die aktuelle absolute URL in Ruby on Rails? (20)
Wie kann ich die aktuelle absolute URL in meiner Ruby on Rails-Ansicht abrufen?
Der request.request_uri
nur die relative URL zurück.
Für Schienen 3.2 oder Schienen 4+
Sie sollten request.original_url
, um die aktuelle URL request.original_url
.
Diese Methode ist in der original_url-Methode dokumentiert, aber wenn Sie neugierig sind, lautet die Implementierung:
def original_url
base_url + original_fullpath
end
Für Schienen 3:
Sie können "#{request.protocol}#{request.host_with_port}#{request.fullpath}"
request.url
, da request.url
jetzt veraltet ist.
Für Schienen 2:
Sie können request.url
statt request.request_uri
schreiben. Dies kombiniert das Protokoll (normalerweise http: //) mit dem Host und request_uri, um Ihnen die vollständige Adresse zu geben.
ABSCHEIDUNGSHINWEIS: #request_uri ist veraltet . Verwenden Sie stattdessen den vollständigen Pfad.
Du url_for(:only_path => false)
Für Ruby on Rails 3:
request.url
request.host_with_port
Ich habe eine Debugger-Sitzung gestartet und das Anfrageobjekt abgefragt:
request.public_methods
Ich brauchte die Anwendungs- URL aber mit dem Unterverzeichnis. Ich benutzte:
root_url(:only_path => false)
Ich denke, dass die Methode Ruby on Rails 3.0 nun request.fullpath
.
In Rails 3 können Sie verwenden
request.original_url
http://apidock.com/rails/v3.2.8/ActionDispatch/Request/original_url
In Ruby on Rails 3.1.0.rc4:
request.fullpath
Sie können die Ruby-Methode verwenden:
:root_url
welches den vollständigen Pfad mit der Basis-URL erhält:
localhost:3000/bla
Sie können diese Methode current_url in ApplicationController hinzufügen, um die aktuelle URL zurückzugeben und das Zusammenführen in anderen Parametern zu ermöglichen
# https://x.com/y/1?page=1
# + current_url( :page => 3 )
# = https://x.com/y/1?page=3
def current_url(overwrite={})
url_for :only_path => false, :params => params.merge(overwrite)
end
Beispiel Verwendung:
current_url --> http://...
current_url(:page=>4) --> http://...&page=4
Sie können einen für Schienen 3.2 verwenden:
request.original_url
or
request.env["HTTP_REFERER"]
or
request.env['REQUEST_URI']
Ich denke, es wird überall funktionieren
"#{request.protocol}#{request.host}:#{request.port}#{request.fullpath}"
Sie können entweder verwenden
request.original_url
oder
"#{request.protocol}#{request.host_with_port}"
um die aktuelle URL zu erhalten.
Um die Anfrage-URL ohne Abfrageparameter zu erhalten.
def current_url_without_parameters
request.base_url + request.path
end
Um die absolute URL zu bekommen, kann das from the root
aus so angezeigt werden
<%= link_to 'Edit', edit_user_url(user) %>
Der Helper users_url generiert eine URL, die das Protokoll und den Hostnamen enthält. Der user_path-Helfer generiert nur den Pfadabschnitt.
users_url: http://localhost/users
users_path: /users
Wenn Sie Rails 3.2 oder Rails 4 verwenden , sollten Sie request.original_url
, um die aktuelle URL zu erhalten.
Dokumentation für die Methode ist unter http://api.rubyonrails.org/classes/ActionDispatch/Request.html#method-i-original_url, aber wenn Sie neugierig sind, ist die Implementierung:
def original_url
base_url + original_fullpath
end
Wenn Sie relativ ohne die Domäne meinen, dann schauen Sie in request.domain
.
request_uri
ist request_uri
in Ruby on Rails 3 veraltet.
Using #request_uri is deprecated. Use fullpath instead.
Schienen 4.0
Sie können request.original_url
, Ausgabe wird wie im folgenden Beispiel angegeben
get "/articles?page=2"
request.original_url # => "http://www.example.com/articles?page=2"
url_for(params)
Und Sie können leicht einen neuen Parameter hinzufügen:
url_for(params.merge(:tag => "lol"))
(url_for(:only_path => false) == "/" )? root_url : url_for(:only_path => false)