Así que tengo una ruta personalizada elegante para inicio de sesiónconseguir renders para reconocer trayectorias de encargo de enrutamiento
# routes.rb
map.login '/login', :controller => 'sessions', :action => 'new'
Visita www.asite.com/login y ya está. Sin embargo, como es costumbre con el inicio de sesión fallido, haremos lo siguiente en nuestra acción. Tenga en cuenta lo que sucede en el inicio de sesión fallido.
# 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
Esto es muy típico. Simplemente represente la nueva acción y solicite el inicio de sesión nuevamente. Desafortunadamente también obtienes una URL fea: www.asite.com/session. Ick! ¿Es posible que la representación respete la URL original?
Pobre ejemplo. Considere las situaciones en las que desea conservar el texto que el usuario ya ha rellenado en el formulario. Render hace esto (ya que el objeto está parcialmente construido). Redirigir pierde el estado. –