【发布时间】:2011-01-21 11:06:31
【问题描述】:
我正在尝试保存用户注册时来自的网站。现在我的 ApplicationController 中有一个 before_filter:
before_filter :save_referer
def save_referer
unless is_logged_in?
session['referer'] = request.env["HTTP_REFERER"] unless session['referer']
end
end
然后,当创建用户时,它会检查此会话变量并将其设置为 nil。有时这不起作用,我担心使用这样的会话可能会发生一些意想不到的事情。有没有人有更好的方法?或者一些输入?
编辑:这是我用来保存引用的逻辑:
def create
@user = User.new(params[:user])
if @user.save_with(session[:referer])
....
end
用户
def save_with(referer)
self.referer = referer unless referer == "null"
self.save
end
这有什么不可行的原因吗?
【问题讨论】:
-
“有时,这不起作用”
-
这是在 Rails 3 中偶然出现的吗?
-
另外,您介意发布您正在工作的代码吗?如,您是否消除了上述所有内容 - 包括
create操作中的内容,并将其全部替换为应用程序控制器中接受的答案中的代码?比如你还在用save_with(referer)这个方法吗?我正在尝试做同样的事情,所以很想知道你是如何解决这个问题的,如果你这样做了。谢谢。
标签: ruby-on-rails session http-referer