Frage Wie bekomme ich die aktuelle absolute URL in Ruby on Rails?


Wie kann ich den Strom bekommen? absolute URL in meiner Ansicht von Ruby on Rails?

Das request.request_uri gibt nur die relative URL zurück.


936
2018-01-29 22:32


Ursprung


Antworten:


Für Schienen 3.2 oder Schienen 4+

Du solltest benutzen request.original_url um die aktuelle URL zu erhalten.

Diese Methode ist dokumentiert unter original_url-Methode, aber wenn Sie neugierig sind, ist die Implementierung:

def original_url
  base_url + original_fullpath
end

Für Schienen 3:

Du kannst schreiben "#{request.protocol}#{request.host_with_port}#{request.fullpath}", schon seit request.url ist jetzt veraltet.


Für Schienen 2:

Du kannst schreiben request.url Anstatt von request.request_uri. Dies kombiniert das Protokoll (normalerweise http: //) mit dem Host und request_uri, um Ihnen die vollständige Adresse zu geben.


1323
2018-01-07 20:20



Ich denke, dass die Ruby on Rails 3.0-Methode jetzt ist request.fullpath.


126
2017-10-07 17:18



Du könntest benutzen url_for(:only_path => false)


112
2017-12-07 18:21



Abwertung WARNUNG: Die Verwendung von #request_uri ist veraltet. Verwenden Sie stattdessen den vollständigen Pfad.


64
2017-07-02 13:30



Wenn du es benutzt Schienen 3.2 oder Schienen 4 du solltest benutzen request.original_url um die aktuelle URL zu erhalten.


Dokumentation für die Methode ist bei 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

56
2017-09-15 07:53



Sie können dies hinzufügen aktuelle_url Methode in ApplicationController, 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

49
2017-08-18 21:21



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

34
2017-07-13 14:55



In Ruby on Rails 3.1.0.rc4:

 request.fullpath

30
2017-10-28 22:55



Ich brauchte die Bewerbung URL aber mit dem Unterverzeichnis. Ich benutzte:

root_url(:only_path => false)

27
2018-04-12 12:32



 url_for(params)

Und Sie können leicht einen neuen Parameter hinzufügen:

url_for(params.merge(:tag => "lol"))

26
2018-01-29 22:44



Ich denke, request.domain würde funktionieren, aber was ist, wenn du in einem Unterverzeichnis wie blah.blah.com bist? So etwas könnte funktionieren:

<%= request.env["HTTP_HOST"] + page = "/" + request.path_parameters['controller'] + "/" + request.path_parameters['action'] %>

Ändern Sie die Parameter basierend auf Ihrer Pfadstruktur.

Ich hoffe, das hilft!


14
2018-03-01 17:15