Question Comment obtenir l'URL absolue actuelle dans Ruby on Rails?


Comment puis-je obtenir le courant URL absolue dans ma vue Ruby on Rails?

le request.request_uri renvoie uniquement l'URL relative.


936
2018-01-29 22:32


origine


Réponses:


Pour Rails 3.2 ou Rails 4+

Tu devrais utiliser request.original_url pour obtenir l'URL actuelle.

Cette méthode est documentée à Méthode original_url, mais si vous êtes curieux, la mise en œuvre est:

def original_url
  base_url + original_fullpath
end

Pour Rails 3:

Tu peux écrire "#{request.protocol}#{request.host_with_port}#{request.fullpath}", depuis request.url est maintenant obsolète.


Pour Rails 2:

Tu peux écrire request.url au lieu de request.request_uri. Ceci combine le protocole (habituellement http: //) avec l'hôte, et request_uri pour vous donner l'adresse complète.


1323
2018-01-07 20:20



Je pense que la méthode Ruby on Rails 3.0 est maintenant request.fullpath.


126
2017-10-07 17:18



Vous pourriez utiliser url_for(:only_path => false)


112
2017-12-07 18:21



AVERTISSEMENT DEPRESSION L'utilisation de #request_uri est obsolète. Utilisez plutôt fullpath.


64
2017-07-02 13:30



Si vous utilisez Rails 3.2 ou Rails 4 Tu devrais utiliser request.original_url pour obtenir l'URL actuelle.


La documentation pour la méthode est à http://api.rubyonrails.org/classes/ActionDispatch/Request.html#method-i-original_url mais si vous êtes curieux, la mise en œuvre est:

def original_url
  base_url + original_fullpath
end

56
2017-09-15 07:53



Vous pouvez ajouter ceci current_url méthode dans ApplicationController pour renvoyer l'URL actuelle et permettre la fusion dans d'autres paramètres

# 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

Exemple d'utilisation:

current_url --> http://...
current_url(:page=>4) --> http://...&page=4

49
2017-08-18 21:21



Pour Ruby on Rails 3:

request.url
request.host_with_port

J'ai démarré une session de débogage et interrogé l'objet de requête:

request.public_methods

34
2017-07-13 14:55



Dans Ruby on Rails 3.1.0.rc4:

 request.fullpath

30
2017-10-28 22:55