rieles 2.3.11Redirigir a destino original después de entrar en
Si un usuario intenta ir a/fotos cuando no se ha identificado, que se dirigen a [site]/admin/login?route=[site]/photos
. Después de iniciar sesión, me gustaría que se envíen a lo que se definió en "ruta" en lugar de a la página de inicio predeterminada.
En /app/controllers/admin_controller.rb:
def login
if session[:user_id] #already logged in
redirect_to ''
@destination = request.url
end
if request.post?
if [authentication code]
if user.activated? #check to see whether the user has activated their account
session[:user_id] = user.id
if params[:route] # ********
redirect_to "#{params[:route]}"
else
redirect_to :controller => 'home'
end
else
flash.now[:notice] = "Your account hasn't been activated yet. Check your emails!"
end
else
flash.now[:notice] = "Invalid email/password combination"
end
end
end
La línea ed "*" es aquel que no está funcionando correctamente. Cuando compruebo para ver los parámetros,: route no está entre ellos, por lo que el argumento no se transfiere con la publicación de inicio de sesión. ¿Alguien puede explicarme por qué no lo está y cómo podría solucionarlo?
¡Gracias!
Tenga una mirada en http://stackoverflow.com/questions/2139996/ruby-on-rails-redirect-toback – Swift
Esta parece que debería hacer el truco , pero todavía soy bastante nuevo en Rails, ¿podrías explicarnos un poco sobre dónde debería poner eso? ¿Saldría en mi controlador de aplicaciones (donde redirecciona a los visitantes que no han iniciado sesión en la página de inicio de sesión) o en algún lugar del método publicado anteriormente? ¡Gracias! – Benjin
Gracias; ¡Eso funcionó (una vez que lo descubrí)! Para todos los demás, lo que llegó a tener que hacer era esto: Have a before_filter que dirige a un método de autorización: 'def autorizar menos logged_in? sesión [: original_target] = request.request_uri rápida [: aviso] = "Debe estar registrado para ver esa página" redirect_to HOME_URL final end' Entonces, en mi controlador de inicio de sesión, después de la autenticación del usuario, compruebe si hay algo almacenado en la sesión [: original_target] y, si es así, vaya a eso. – Benjin