2009-09-25 14 views
11

Quiero construir una url dentro de mi aplicación de raíles que apunta a otro servidor que no está ejecutando rieles. Usar url_for casi satisface mis requisitos, pero requiere una clave de controlador que no necesito (redirigiendo a una página de nivel superior en el sitio externo).Generar una URL externa en raíles

La razón por la que quiero hacer esto es para que tenga una construcción limpia de una url con un hash de argumentos (algunos de los cuales están determinados en tiempo de ejecución).

+1

Me encanta que Google - 1 hora después de preguntar a su pregunta, es el sexto resultado para 'rails generan url externo'. – nfm

Respuesta

3

¿Qué opinas sobre URI::HTTP?

+1

lamentablemente no puedo pasar la cadena de consulta como tengo como hubiera preferido, pero está lo suficientemente cerca. Me parece un poco extraño que usar 'HTTPS :: build' con el método' to_s' devuelva un https uri, mientras que el método 'request_uri' devuelve un http uri. –

+0

No conozco una solución fácil para el problema de hash into prameters. Si no necesita parámetros anidados, probablemente pueda crear una función simple para hacer esto. La función URI :: HTTPS.request_uri() devuelve solo la ruta y la cadena de consulta. Todo lo que queda antes queda fuera. Puede intentarlo fácilmente en la consola de Rails. – Roman

26

Puede llamar to_query en Hash en los carriles que se encargará de codificación URL, etc. Así que tal vez algo como esto:

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