Więc mam snazzy trasą niestandardową logowaniaPierwsze renderuje rozpoznać ścieżki niestandardowych routingu
# routes.rb
map.login '/login', :controller => 'sessions', :action => 'new'
Odwiedź www.asite.com/login i jesteś tam. Podobnie jak w przypadku nieudanego logowania, w naszej akcji zrobimy co następuje. Zanotuj, co się dzieje w przypadku nieudanego logowania
# sessions_controller.rb
def create
self.current_user = User.authenticate(params[:email], params[:password])
if logged_in?
# some work and redirect the user
else
flash.now[:warning] = "The email and/or password you entered is invalid."
render :action => 'new'
end
end
To bardzo typowe. Po prostu wyślij nową akcję i spróbuj ponownie się zalogować. Niestety dostaniesz również brzydki URL: www.asite.com/session. Ick! Czy można uzyskać zgodność z oryginalnym adresem URL?
Zły przykład. Rozważ sytuacje, w których chcesz zachować tekst, który użytkownik już wypełnił w formularzu. Render to robi (ponieważ obiekt jest częściowo zbudowany). Przekierowanie traci stan. –