request.env [“omniauth.auth”]如果没有作为参数调用则返回nil

时间:2015-01-16 00:39:27

标签: ruby-on-rails ruby request omniauth omniauth-facebook

我试图用facebook做一个简单的omniauth电话。如果我像这样捕获请求哈希,一切正常:

def facebook
    user = User.from_facebook(request.env["omniauth.auth"])
    if user.persisted?
      ...
    else
      ...
    end
  end

但是如果我尝试将请求哈希保存在变量中,我得到request = nil。 e.g:

def facebook
  omni_request = request.env["omniauth.auth"]
  user = User.from_facebook(omni_request)
  if user.persisted?
    ...
  else
    ...
  end
end

上面的例子爆炸了,因为请求是零,我不能在没有的东西上调用env。

有没有人知道为什么在from_facebook类方法之外调用时请求为nil?

1 个答案:

答案 0 :(得分:2)

第三行应该是:user = User.from_facebook(omni_request)?