So eine pfiffige individuelle Routemacht Erste individuellen Routing-Pfade
# routes.rb
map.login '/login', :controller => 'sessions', :action => 'new'
Besuch www.asite.com/login Ich habe für die Anmeldung zu erkennen, und du bist da. Wie bei fehlgeschlagener Anmeldung üblich, werden wir jedoch in unserer Aktion Folgendes tun. Beachten Sie, was bei fehlgeschlagener Anmeldung geschieht.
# 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
Dies ist sehr typisch. Rendern Sie einfach die neue Aktion und fordern Sie zur erneuten Anmeldung auf. Leider bekommst du auch eine hässliche URL: www.asite.com/session. Ick! Ist es möglich, beim Rendern die ursprüngliche URL zu berücksichtigen?
Schlechtes Beispiel. Berücksichtigen Sie Situationen, in denen der Text, den der Benutzer bereits in das Formular eingegeben hat, beibehalten werden soll. Render macht das (da das Objekt teilweise aufgebaut ist). Redirect verliert den Status. –