rails项目使用omniauth - 卡在评估nil。[]错误

时间:2012-01-24 08:49:09

标签: ruby-on-rails omniauth

我在我的rails项目中使用omniauth来验证facebook。

我也试图从omniauth获取用户当前的城市,当用户在facebook中拥有他们当前的城市时,这种方法很有用。

额外:   user_hash:     姓名:杰夫特纳     地点:       名称:加利福尼亚州奥克兰

但是当用户没有任何东西时,我无法设置该值

current_city = user_data['location']['name']

错误: 当你没想到它时,你有一个零对象! 您可能期望ActiveRecord :: Base的实例。 评估nil。[]

时发生错误

我可以看到,这些属性的价值甚至都没有从omniauth中回来

如果我尝试测试零条件

if user_data['location']['name'].blank? == false
current_city = user_data['location']['name']
end

我似乎在第一行得到了相同的错误(user_data ['location'] ['name']。blank?)

仍然无法评估为零。

我对rails非常陌生,所以我希望我错过了一些明显的东西。

更新

这是我最终将其更改为并且工作正常。下面的回答看起来也会起作用

if user_data['location'].nil? == false
  if user_data['location']['name'].nil? == false
   current_city = user_data['location']['name']
  end
end

1 个答案:

答案 0 :(得分:1)

您可以尝试这样做:

current_city = auth.fetch('location', []).fetch('name', nil)

使用fetch