web-dev-qa-db-fra.com

rails obtenir l'URL racine / base de l'application

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.

31
Bruce Xinda Lin

Selon this vous pouvez faire request.domain

24
Tom Prats

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

52
Caffeine Coder

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.

11
Kaleem Ullah