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.

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'

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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.