我在我的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