Witam…
Mam stronę A na która wchodzę, bądź ze Strony B, lub ze Strony C.
Jaki dodać link na stronie A, aby Klikając Back wracać do Strony B, jeśli z niej było wejście na A, lub do strony C jeśli to z tej strony było wejście na Sronę A.
Pozdrawiam
Witam…
Mam stronę A na która wchodzę, bądź ze Strony B, lub ze Strony C.
Jaki dodać link na stronie A, aby Klikając Back wracać do Strony B, jeśli z niej było wejście na A, lub do strony C jeśli to z tej strony było wejście na Sronę A.
Pozdrawiam
Chcesz mieć link ‘Back’, czy korzystać z przycisku przeglądarki?
Link, bo jak dusze na przycis przegladarki to wraca tam skad przyszedłęm.
Pozdrawiam
To czegoś nie rozumiem, opisałeś taki przypadek:
B -> A - klikając ‘Back’ wracasz ma B
C -> A - klikając ‘Back’ wracasz ma C
Tak działa button back przeglądarki i tego oczekuje użytkownik.
Napisz jeżeli źle zrozumiałem.
P.S.1 Co ma się dziać jeżeli user wejdzie na stronę z zewnętrznego url albo bezpośrednio wpisze adres w pasek przeglądarki
P.S.2 Z punktu widzenia usability, linki ‘wstecz’ nie mają sensu. Istnieją badania że prawie zawsze użytkownicy klikają w przycisk back przeglądarki jeżeli chcą się cofnąć, na zasadzie odruchu. Równie rzadko użytkownicy używają ścieżki tzw. breadcrumbs (choć ta może być przydatna w stronach katalogowych). Może warto się zastanowić czy button back nie wystarczy.
[quote=piachoo]To czegoś nie rozumiem, opisałeś taki przypadek:
B -> A - klikając ‘Back’ wracasz ma B
C -> A - klikając ‘Back’ wracasz ma C
Tak działa button back przeglądarki i tego oczekuje użytkownik.
Napisz jeżeli źle zrozumiałem.
P.S.1 Co ma się dziać jeżeli user wejdzie na stronę z zewnętrznego url albo bezpośrednio wpisze adres w pasek przeglądarki[/quote]
Od nowa:
mam dwa adresy :
departments/2/employees -> lista pracownikow dzialu 2 -> strona A
empoyees -> lsita wszystkich pracownikow -> strona B
Na Stronie A i B jest link Nowy Pracownik ktory wyswietla ten sam widok -> strona C
_poprawione
Jak dodać link na Stronie C, aby wrócić na stronę A jeśli kliknę Link Wstecz na stronie C, jeżeli na Strone C wszedłęm ze Strony A
Jak dodać link na Stronie C, aby wrócić na stronę B jeśli kliknę Link Wstecz na stronie C, jeżeli na Strone C wszedłęm ze Strony B
Ogólnie
Jesli wszełem na C ze strony B to link wstecz prowadzi na B
Jesli wszełem na C ze strony A to link wstecz prowadzi na A
-poprawione
Pozdrawiam
Mój błąd w opisie, już poprawiłem.
I do not see the difference 
tak na moje oko to odpowiedź piachoo jest jak najbardziej aktualna…
EDIT:
I do not see the difference (poprawione: ) again
Juz poprawiłem mój opis w poprzednim poście. aktycznie żle opisałem problem.
Pozdrawiam
[quote]_poprawione
Jak dodać link na Stronie C, aby wrócić na stronę A jeśli kliknę Link Wstecz na stronie C, jeżeli na Strone C wszedłęm ze Strony A
Jak dodać link na Stronie C, aby wrócić na stronę B jeśli kliknę Link Wstecz na stronie C, jeżeli na Strone C wszedłęm ze Strony B[/quote]
Chyba rozumiem problem - nie chodzi tutaj o funkcjonalność stricte “back” przeglądarki, bo ta wróci nas do starej, niezaktualizowanej listy pracowników. Pomijając (słuszne) rozważania o usability, najprościej można to zaimplementować przez cookies i ewentualnie javascript.
W cookie zapisujesz stronę (tzn. jej pełny lub skrócony adres), z której ktoś wszedł. Możesz potem wykorzystać tę informację do wygenerowania właściwego przycisku “back” albo po stronie serwera (korzystając z Rubiego), albo po stronie klienta (korzystając z JS).
Nie sadze, ze trzeba zapisywac w cookie informacje, ktora juz jest przesylana (o ile dobrze rozumiem intencje IOpeza).
Jezeli chcesz zrobic przycisk ‘wstecz’ po stronie klienta mozesz skorzystac z javascriptowej metody history.back(-1), jezeli potrzebujesz tej informacji po stronie serwera, powinna byc ona zapisana w naglowku zadania, do ktorego masz dostep poprzez request.headers[‘HTTP_REFERER’].
Jak pisałem - chyba nie o to chodzi, bo jeśli dobrze rozumiem przykład, to poprzednia strona ulega modyfikacji na “stronie C”, a wtedy history.back(-1) wróci nas do jej poprzedniej wersji.
Co do drugiego rozwiązania - owszem można spróbować je wykorzystać, ale to na tyle na ile rozumiem ten schemat, to przypuszczam, że strona C (a właściwie ten adres), jest wywoływany wielokrotnie: najpierw do wyświetlenia formularza do wprowadzenia nowego pracownika, następnie do jego zapisania i wtedy nie można wykorzystać HTTP_REFERER.
Rzecz jasna są to moje domniemania, gdyż nie dokładnie to jest napisane w przedstawionym scenariuszu, natomiast pasuje to do tego jak Railsy generują Scaffold - na stronie z danymi “nowego pracownika” znajduje się przycisk “back”, który wraca do listy pracowników. I sądzę, że właśnie chodzi o dopracowanie tej funkcjonalności.
Się rozpisałem ![]()
[quote=apohllo]Rzecz jasna są to moje domniemania, gdyż nie dokładnie to jest napisane w przedstawionym scenariuszu, natomiast pasuje to do tego jak Railsy generują Scaffold - na stronie z danymi “nowego pracownika” znajduje się przycisk “back”, który wraca do listy pracowników. I sądzę, że właśnie chodzi o dopracowanie tej funkcjonalności.
Się rozpisałem :)[/quote]
Dokładnie o to chodzi.
Jako ze adres wyglada tak:
employees/1
i department/2/employees/1
w obu przypadkach to dokladnie ta sama strona
to do cofniecia na wlasicwa strone wykorzystam fakt ze w drugim przypadku ustawione jest :department_id
a w pierwszym jest puste.
I nawet jak ktos wpisze z palca adres
department/4/employees/1 i kliknie na niej przycisk back to cofnie go do listy pracownikow dzialu 4.
Moze back to nie najlepsze okreslenie, ale cos w ten desen. W 1 przypadku link, do lista pracownikow a w drugil link do lista pracownikow dzialu 2
Chyba najlepsze rozwiazanie?
Pozdrawiam
Problem rozwiązany:
A oto rozwiązanie:
<%= link_to_unless(params[:department_id].nil?, "Pracownicy działu", department_employees_path(params[:department_id]) ) do
link_to( "Pracownicy", employees_path )
end
%>
Dzieki za zainteresowanie i pozdrawiam