Witam,
Mam taki problem: używam plaginu acts_as_authenticated do logowania, ale chciałbym aby wyświetlał on jakieś komunikaty w przypadku nieudanego logowania. W tej chwili metoda logowania (account_controller.rb) wygląda tak:
def login
return unless request.post?
self.current_user = User.authenticate(params[:login], params[:password])
if logged_in?
if params[:remember_me] == "1"
self.current_user.remember_me
cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at }
end
redirect_back_or_default(:controller => '/account', :action => 'index')
flash[:notice] = "Logged in successfully"
end
end
Jak użyć czegloś 'ala validates_presence_of w kontrolerze?
Też o tym myślałem, ale nie może wyświetlać się komunikat o błędzie w przypadku kiedy nie podjęto nawet próby logowania. Jeżeli już to będzie elsif request.post?
Powinny być dwie niezależne metody np. o takich nazwach:
new - trywialna, pokazuje formularz logowania, reaguje na GET
create - ten kod, co pokazałeś z poprawkami Radarka (“else” + verify)
Sytuacja, w której musisz w dowolnej metodzie kontrolera sprawdzać ręcznie typ żądania (GET/POST) jest nienaturalna. To powinno być realizowane deklaratywnie w routes.rb. Na marginesie, we wtyczce restful_authentication jest to już zrobione za Ciebie.