2012-01-24 8 views
0

私はFacebookプロジェクトで認証するためにomniauthを使用しています。レールプロジェクトomniauthを使用しています - [n]を評価することに固執しました[]エラー

また、ユーザーの現在の都市をomniauthから取得しようとしていますが、ユーザーが現在の都市をFacebookに持っていれば素晴らしい結果が得られます。

エクストラ: user_hash: 名:ジェフ・ターナー 場所: 名:オークランド、カリフォルニア

が、ユーザーは何も持っていないとき、私はその値

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

を設定カントエラー: 期待していないときにオブジェクトがありません。 ActiveRecord :: Baseのインスタンスが必要な場合があります。 nilを評価しながら エラーが発生しました。[]

を私がnil条件をテストしようとした場合、私は、私は

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

それらの属性とは値が偶数バックomniauth

から来ていないことがわかります(user_data ['location'] ['name']。空白?)

まだcantを評価していません。

私はレールがかなり新しいので、私はちょうど明らかに何かを逃したと思う。

更新

これは私がそれを変えてしまった、それがうまく働いたものです。

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

fetchを使用する:それは

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

答えて

1

あなたはこのような何かをやって試すことができ、同様に機能するように答えは以下になります。

+0

応答をありがとう、それはあまりにもそれを修正するように見えます。私たちは昨夜それを変更し終わり、私はこれを更新することを忘れました。 – jtwg

+0

それは大丈夫です!フェッチは本当に便利で、それは素晴らしいツールです。:) – fuzzyalej