Estoy intentando guardar el sitio del que proviene un usuario cuando se registra. Ahora mismo tengo un before_filter en mi ApplicationController:Cómo guardar http referer en rieles
before_filter :save_referer
def save_referer
unless is_logged_in?
session['referer'] = request.env["HTTP_REFERER"] unless session['referer']
end
end
Luego, cuando se crea un usuario, comprueba esta variable de sesión y lo pone a cero. A veces esto no funciona y me preocupa que haya algunas cosas no intencionadas que suceden con el uso de sesiones como esta. ¿Alguien tiene una mejor manera? O alguna entrada tal vez?
EDIT: Esta es la lógica que uso para guardar el árbitro:
def create
@user = User.new(params[:user])
if @user.save_with(session[:referer])
....
end
usuario
def save_with(referer)
self.referer = referer unless referer == "null"
self.save
end
¿Hay alguna razón por la que esto no debería funcionar?
"a veces, esto no funciona" <- ¿qué hace? Es normal que no siempre tenga un referer. Si el usuario ingresa su URL directamente, no hay referencia. –
¿Fue esto en Rails 3 por casualidad? – marcamillion
Además, ¿te importaría publicar el código que tienes trabajando? Como en, ¿eliminaste todo lo anterior, incluidas las cosas en la acción 'crear' y simplemente lo reemplazaste todo con el código en la respuesta aceptada en el controlador de la aplicación? ¿Todavía utiliza el método 'save_with (referer)' por ejemplo? Estoy tratando de hacer lo mismo, por lo que me encantaría saber cómo fue capaz de resolver esto, si es así. Gracias. – marcamillion