【发布时间】:2012-01-25 02:42:21
【问题描述】:
我在我的 rails 项目中使用omniauth 来通过facebook 进行身份验证。
我也在尝试从omniauth获取用户当前的城市,当用户在facebook中有他们当前的城市时,这非常有用。
额外: 用户哈希: 姓名:杰夫·特纳 地点: 名称:加利福尼亚州奥克兰
但是当用户没有任何东西时,我无法设置该值
current_city = user_data['location']['name']
错误: 当你没想到时,你有一个 nil 对象! 您可能期望 ActiveRecord::Base 的实例。 评估 nil 时发生错误。[]
我可以看到,即使从omniauth 回来,这些属性也没有价值
如果我尝试测试 nil 条件
if user_data['location']['name'].blank? == false
current_city = user_data['location']['name']
end
我似乎在第一行遇到了同样的错误 (user_data['location']['name'].blank?)
仍然无法评估 nil。
我对 Rails 很陌生,所以我希望我错过了一些明显的东西。
更新
这就是我最终将其更改为的内容,并且效果很好。下面的答案看起来也可以
if user_data['location'].nil? == false
if user_data['location']['name'].nil? == false
current_city = user_data['location']['name']
end
end
【问题讨论】: