0

Facebook API を使用して、すべての友達のリストを取得しています。ただし、結果をデータベースに保存したくありません。返された結果のハッシュを取得し、結果に対して選択を実行したいだけです。

とはいえ、それができなくて困っています…。

このような結果が得られます...

[{"name"=>"John Smith", "id"=>"12345"}, {"name"=>"Jane Doe", "id"=>"23456"}, {"name"=>"Samuel Jackson", "id"=>"34567"}, {"name"=>"Kate Upton", "id"=>"45678"}]

それらは @friends に保存されます

私の選択は次のとおりです。

@friends.select{|key, hash| hash["name"] == "John Smith" }

しかし、「nil:NilClass の undefined method `[]'」というエラーが表示され続けます

2 つの質問: 1. ハッシュの検索で John Smith を返すにはどうすればよいですか (データベースに保存せず、最初の Facebook API クエリを変更せずに) 2. 「==」ではなく「Like」を使用することは可能ですか?という単語を含む結果が返されるようにするには?

ありがとうございました!

4

1 に答える 1

1

"undefined method [] for nil:NilClass"メソッドselect を間違って使用しているため、取得しています。これを試してください:

 @friends.select{ |hash| hash["name"] == "John Smith" }

これで最初の質問に答えられると思います。データベースに何も保存する必要はありませんが、インスタンス変数に保存し、@friendsselect を正しく使用してください。

2 番目の質問については、正規表現を調べる必要があると思います。これは、「いいね」が何を意味するかによって異なります。

という単語を含む結果が返されますか?

特定の単語 (たとえばSmith ) をチェックしたい場合は、次のように select を実行します。

@friends.select{ |hash| hash["name"].include? "Smith" }

これにより、名前にSmithという単語が含まれる配列のすべての要素が得られます。

于 2012-07-04T23:01:03.990 に答える