Wchodze jako niezalogowany user na strone, widze formularz dodawania komentarza, wypelniam w pocie czola, klikam submit i zostaje przekierowany na strone logowania z bledem ze mam to low permissons dla tej action. Loguje sie wiec, i ponownie widze strone z formularzem, lecz pustym (wiadomo).
Jak jednak zrobic, aby po poprawnym zalogowaniu mnie, wykonac akcje z parametrami, ktore probowalem wykonac wczensiej, czyli de facto jak i gdzie zapamietac parametry i request method, oraz jak je potem wywolac ?
Wchodze jako niezalogowany user na strone, widze formularz dodawania komentarza, wypelniam w pocie czola, klikam submit i zostaje przekierowany na strone logowania z bledem ze mam to low permissons dla tej action. Loguje sie wiec, i ponownie widze strone z formularzem, lecz pustym (wiadomo).
Jak jednak zrobic, aby po poprawnym zalogowaniu mnie, wykonac akcje z parametrami, ktore probowalem wykonac wczensiej, czyli de facto jak i gdzie zapamietac parametry i request method, oraz jak je potem wywolac ?
Pozdrowienia[/quote]
W sesji. Albo w ukrytym polu na formularzu logowania. Nie ma ‘jedynie słusznej drogi’. Sesja będzie wygodna ale zazwyczaj ograniczona rozmiarowo.
Chodzi o to ze masz standardowy mechanizm autoryzacji, ktory w przypadku braku uprawnien, zapamietuje gdzie ostatnio byles, i po zalogowaniu Cie tam z powrotem przekieruje, to sie swietnie sprawdza dla akcji z metoda get, ale jak potem, po poprawnym zalogowaniu sie, wykonac metode post ? Chocby utworzenie komentarza.
Wyobraz sobie ze piszesz spolecznosciowke i masz tam mase takich formularzy, chocby komentarze, dodawanie zdjec, ich ocena…
Zwykle redirect_to(session[:remembered_action]) w tym wypadku nie wystarczy. Chodzi mi o to jak tego typu kwestie sie rozwiazuje.
Masz pewnie jakąś akcję typu require_login, która jest w stanie przekierować Cię za pomocą javascriptu. Dopisz do przekierowania parametry GET, a później w kontrolerach łap te parametry i uzupełniaj pola w widoku.
Po prostu usuń możliwość komentowania niezalogowanym użytkownikom. Zamiast formatki do komentawania, pokaż link do logowania. Po zalogowaniu użytkownik wraca na tą samą stronę i może komentować.
Osobiście używam active_presenter, dzięki temu możesz rozwiązać swój problem. Presenter.y służą też np. do tworzenia wielostronicowych rejestracji (wizardy) na wielu modelach zapisując zserializowane dane w sesji w bazie.
Na Twoje potrzeby idealnie się to sprawdzi.
A co do tego,
Moim zdaniem, źle podchodzisz do tematu. Obrabiasz formularz w trakcie, przed logowaniem. Po zalogowaniu zapisujesz wcześniej zwalidowany model/modele Presenter.a.
Jeśli Presenter to trochę za dużo to pozostań na utworzonej sesji zapisując zserializowane dane, a później po zalogowaniu zapisz je w bazie.
Czasami może jednak lepiej nie kombinować i wybierać najprostsze rozwiązania nie tak oczywiste, co już trafnie zaznaczył @tjeden