J'essaie de sauvegarder le site d'où un utilisateur est venu lors de son inscription. En ce moment j'ai un before_filter dans mon ApplicationController:Comment enregistrer le référenceur http dans les rails
before_filter :save_referer
def save_referer
unless is_logged_in?
session['referer'] = request.env["HTTP_REFERER"] unless session['referer']
end
end
Ensuite, lors de la création d'un utilisateur, il vérifie cette variable de session et qu'elle fixe à zéro. Parfois, cela ne fonctionne pas et je crains qu'il pourrait y avoir des choses inattendues avec l'utilisation de la session comme ça. Est-ce que quelqu'un a un meilleur moyen? Ou une entrée peut-être?
EDIT: Ceci est la logique que je utilise pour enregistrer le referer:
def create
@user = User.new(params[:user])
if @user.save_with(session[:referer])
....
end
utilisateur
def save_with(referer)
self.referer = referer unless referer == "null"
self.save
end
Y at-il des raisons pour lesquelles cela ne devrait pas travailler?
"parfois, cela ne fonctionne pas" <- que fait-il? C'est normal si vous n'avez pas toujours de référent. Si l'utilisateur entre directement votre URL, il n'y a pas de référant. –
Était-ce dans Rails 3 par hasard? – marcamillion
Aussi, cela vous dérangerait-il de poster le code que vous avez travaillé? Comme dans, avez-vous éliminé tout ce qui précède - y compris les choses dans l'action 'create' et juste le remplacer par le code dans la réponse acceptée dans votre contrôleur d'application? Utilisez-vous toujours la méthode 'save_with (referer)' par exemple? J'essaie de faire la même chose, alors j'aimerais savoir comment vous avez pu résoudre cela, si vous l'avez fait. Merci. – marcamillion