2009-09-25 9 views
11

Je souhaite créer une URL dans l'application Rails qui pointe vers un autre serveur qui ne parcourt pas les rails. L'utilisation de url_for répond presque à mes besoins, mais nécessite une clé de contrôleur dont je n'ai pas besoin (redirection vers une page de niveau supérieur sur le site externe).Génération d'une URL externe dans les rails

La raison pour laquelle je veux faire ceci est que j'ai une construction propre d'une URL avec un hachage d'arguments (dont certains sont déterminés au moment de l'exécution).

+1

Gotta love Google - 1 heure après avoir posé votre question, il est le 6 résultat pour 'rails génère une URL externe'. – nfm

Répondre

3

Que pensez-vous de URI::HTTP?

+1

malheureusement, je ne peux pas passer dans la chaîne de requête comme l'aurait préféré, mais c'est assez proche. Je trouve un peu étrange que l'utilisation de 'HTTPS :: build' avec la méthode' to_s' renvoie un uri https, alors que l'utilisation de la méthode 'request_uri' renvoie un uri http. –

+0

Je ne connais pas une solution facile pour le problème de hachage dans les paramètres. Si vous n'avez pas besoin de paramètres imbriqués, vous pouvez probablement créer une fonction simple pour cela. La fonction URI :: HTTPS.request_uri() renvoie uniquement le chemin et la chaîne de requête. Tout est laissé de côté avant. Vous pouvez l'essayer facilement dans la console Rails. – Roman

26

Vous pouvez appeler to_query sur Hash dans des rails qui se chargeront de l'URL encodage etc. Alors peut-être quelque chose comme ceci:

params = { 
    :a => "http://google.com", 
    :b => 123 
} 
url = "http://example.com?#{params.to_query}" 
Questions connexes