web-dev-qa-db-fra.com

Rails: comment obtenir l'hôte actuel ou créer une URL avec lui?

J'ai besoin d'utiliser l'hôte pour créer une URL avec un port différent.

Par exemple, si l'hôte est example.com, je dois générer une URL comme http://example.com:8080/

J'ai besoin qu'il soit portable, donc quand je suis dans mon environnement local, il montre http: // localhost: 8080 / à la place.

Des idées?

22
HappyDeveloper

J'utilise souvent un before_filter in ApplicationController pour définir une variable d'instance avec le nom d'hôte, quelque chose comme ceci:

@hostname = request.Host || "www.mydomain.com"

Vous pouvez aussi utiliser request.port pour obtenir le numéro de port par lequel la demande est passée (extrait des en-têtes HTTP).

43
Alex D

Fondamentalement, vous devez générer une URL basée sur l'URL actuelle et un autre numéro de port. cela peut être fait comme -

request.url(:port => 20)

Sur Rails console

app.root_url(:port => 20)
 => "http://www.example.com:20/" 

Pour extraire l'hôte de l'utilisation de l'URL

request.Host
8
Sandip Ransing