ruby-on-rails - headers - ruby on rails request




Wie bekomme ich die aktuelle absolute URL in Ruby on Rails? (20)

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.

Wie kann ich die aktuelle absolute URL in meiner Ruby on Rails-Ansicht abrufen?

Der request.request_uri nur die relative URL zurück.



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 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 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)




url