2011-11-09 69 views
23

Estoy usando Rails 3.0.9, Ruby 1.9.2, Devise 1.3.4 y tengo una necesidad en Devise session new view para acceder a los parámetros url de solicitud aunque veo esto como una solicitud general de Rails pregunta de manejo Esencialmente, se realiza una solicitud a un recurso autenticado Devise que redirecciona al usuario a la pantalla de inicio de sesión. En la vista de inicio de sesión, necesito acceso a la URL de solicitud, por ejemplo, esta es la URL de solicitud llamada en un principioRails 3 get request referrer

http://mysite.com/article/5?type=blah 

en la página de redirección de inicio de sesión, necesito el acceso a esa URL, alguien sabe cómo puedo hacer ¿esta?

Respuesta

42

Puede usar request.referer o request.env['HTTP_REFERER'] en su controlador para obtener la URL del referer.

+0

Probé que, no funcionó, muestra la url de la pantalla de inicio de sesión. Por eso, quise decir en el controlador de sesiones. Si pongo el código en el controlador 'articles', no se ejecutará hasta después de autenticarse el inicio de sesión. –

+0

Si entiendo correctamente sus requisitos, desea redirigir al usuario a la página, donde estaba antes de la acción de inicio de sesión. ¿Por qué no simplemente guarda la url de redirección en la sesión, cuando el usuario hace clic en iniciar sesión? – topek

+0

La redirección a la página de inicio de sesión ya se manejó correctamente, lo que necesito es que en la página de inicio de sesión solicite las credenciales del usuario, necesito acceder a la URL de solicitud original, espero que tenga más sentido. Debo aclarar que la llamada original proviene de otro servidor, no de un navegador. –

3

Acabo de descubrir que WEBrick maneja request.referrer incorrectamente. Pero no te preocupes Unicornio maneja bien. No probé eso en otros servidores. Deberías verificar esto con los tuyos. No creo que uses WEBrick como servidor de producción.

+0

Indeed WEBrick no es apropiado para un servidor de producción También encontré diferencias en la forma en que WEBrick y Puma manejaban 'request.referrer', definitivamente vale la pena verificar si' request.referrer' no se comporta como se esperaba usando WEBrick. – zelanix