Dans mon application, j'ai quelques API sous le domaine api. Maintenant, dans l'une des API, je veux générer une URL pointant vers le domaine principal, par exemple
test.com/blabla...
J'ai essayé d'utiliser rl_for mais semble que la valeur par défaut root_url ou request.Host est dans le domaine api. Url_for fera en sorte qu'il soit
api.test.com/blabla..
pendant que je veux que ce soit
test.com/blabla...
Url_for peut prendre un paramètre
Host: ...
pour le définir sur test.com/, la question est de savoir comment obtenir l'URL racine/base (test.com) pour l'hôte? root_url ou request.Host sont tous api.test.com.
Des idées? Merci.
Selon this vous pouvez faire request.domain
Juste pour que ce soit utile à quelqu'un d'autre, je suis tombé sur ça aujourd'hui
request.base_url
donne le chemin complet en local ainsi qu'en direct.
request.domain
donne juste le nom de domaine donc il casse parfois un peu le lien lors de la redirection
Méthode alternative la plus simple:
inclure dans votre classe
include Rails.application.routes.url_helpers
créer une fonction ou simplement utiliser root_url
pour obtenir l'URL racine/base de l'application:
def add_Host_prefix(url)
URI.join(root_url, url).to_s
end
enfin: ajouter
Rails.application.routes.default_url_options[:Host] = 'localhost:3000'
dans:
Your_project_root_deir/config/environments/development.rb
bien que les assistants ne soient accessibles que dans les vues, mais c'est une solution qui fonctionne.