Czy istnieje jakiś sprytny sposób, by ograniczyć cofanie w obrębie witryny? tzn: wchodzę na stronę z google.pl, klikam “cofnij” i cofa mnie do google.pl, a chciałbym, żeby został na mojej stronie. Czytałem o nadpisaniu metody url_for ale jak to powinno wyglądać?
W rezultacie albo dostajesz HTTP_REFERER, o ile jest dostępny, lub po prostu “wstecz” w przeglądarce (dlatego osobiście nie przepadam za :back, ale to już inna sprawa).
Żeby to nadpisać, najłatwiej będzie Ci to zrobić w helperze, np. w ApplicationHelper:
module ApplicationHelper
def url_for(options = nil)
if options == :back
# ... tutaj możesz sprawdzić czy HTTP_REFERRER to Twoja domena czy nie
# i w zależności od tego zwrócić to co Ci pasuje
else
super
end
end
end
Helpery są includowane na końcu, więc jak w takiej konfiguracji wywołasz url_for, to najpierw zostanie wykonana Twoja implementacja, a jeżeli podana była inna opcja niż :back, ta oryginalna (dzięki “super”)