Jak uzyskać ścieżkę referencyjną wniosków?

83

Potrzebuję ścieżki strony odsyłającej. Nie chcę nazwy domeny. Na przykład, jeśli strona odsyłająca to http://www.google.com/adsenseja chcę /adsense.

szyny101
źródło

Odpowiedzi:

139

request.refererzwraca ciąg, ale możesz użyć modułu URI Rubiego, aby go opakować, a następnie po prostu zapytać o ścieżkę:

if URI(request.referer).path == '/adsense'
chadoh
źródło
4
Używam tej linii URI (request.referer) i nadal otrzymuję błąd URI :: InvalidURIError: zły URI (nie jest URI?). masz pomysł, co to może być?
kateray
Trudno powiedzieć, co to może być bez dodatkowych informacji. Spróbuj wydrukować tylko request.refererw dziennikach, aby zobaczyć, dlaczego Ruby może się nie podobać. (PS: Możesz zadać swoje pytanie jako osobne pytanie, a nie jako komentarz do odpowiedzi na inne pytanie. :-))
chadoh
1
Sprawdź to pytanie, aby dowiedzieć się więcej URI::InvalidURIError.
James Chevalier
Co dziwne, strona odsyłająca może być nieprawidłowym identyfikatorem URI, nawet jeśli nie jest pusta. Odkryłem to za pomocą elementu odsyłającego zawierającego znak „|”, który wywołał URI :: InvalidURIError Zawijam URI.Parse w bloku begin / rescue / end.
tomf
27

Możesz uzyskać dostęp do referencji za pomocą

request.referer
Adrian Serafin
źródło
3
Ale strona odsyłająca podaje pełny adres URL. potrzebuję ścieżki
rails101
2
Dziękuję za pomocny link @Fivell. Dodałem odpowiedź z informacjami z niej do samego wątku, aby przyszli odwiedzający nie byli nękani zgnilizną linków.
chadoh