проект рельсы с использованием omniauth - застрял при оценке ноль. [] ошибка - PullRequest
0 голосов
/ 24 января 2012

Я использую omniauth в своем проекте rails для аутентификации на 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?)

все еще не могу оценить ноль.

Я довольно новичок в рельсах, так что я надеюсь, что пропустил что-то очевидное.

Обновление

это то, что я в итоге изменил, и он работал нормально. ответ ниже выглядит так, как будто это будет работать

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

1 Ответ

1 голос
/ 24 января 2012

Вы можете попробовать сделать что-то вроде этого:

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

Используя fetch .

...