¿Cómo obtener la ruta de referencia de la solicitud?

82

Necesito la ruta del referente. No quiero el nombre de dominio. Por ejemplo, si el referente es http://www.google.com/adsenseI want /adsense.

rieles101
fuente

Respuestas:

138

request.refererdevuelve una cadena, pero puede usar el módulo URI de Ruby para envolverlo y luego simplemente pedirle su ruta:

if URI(request.referer).path == '/adsense'
chadoh
fuente
4
Estoy usando esa línea URI (request.referer) y sigo obteniendo un error URI :: InvalidURIError: bad URI (¿no es URI?). ¿Alguna idea de lo que podría ser esto?
kateray
Es difícil decir qué podría ser sin más información. Intente imprimir solo request.refereren los registros para ver por qué a Ruby podría no gustarle. (PD: es posible que desee hacer su pregunta como una pregunta separada, en lugar de como un comentario sobre la respuesta a otra pregunta. :-))
chadoh
1
Consulte esta pregunta para obtener más información URI::InvalidURIError.
James Chevalier
Curiosamente, el referente puede ser un URI no válido incluso si no está en blanco. Descubrí esto con una referencia que contiene un '|', que generó URI :: InvalidURIError Estoy envolviendo el URI.Parse en un bloque de inicio / rescate / fin.
tomf
28

Puede acceder al referer con

request.referer
Adrian Serafín
fuente
3
Pero el referente proporciona una URL completa. necesito el camino
rails101
2
Gracias por el enlace útil, @Fivell. Agregué una respuesta con la información a este hilo para que los futuros visitantes no se vean afectados por el link-rot.
chadoh