2012-07-04 28 views
0

我正在使用Facebook API來提取我所有朋友的列表。但是,我不想將結果存儲在數據庫中。我只想把我得到的結果散列在結果上並對結果進行選擇。搜索類似匹配rails的哈希結果3

不過,我有一個很難做到這一點......

我得到這樣的結果...

[{"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" } 

,但我不斷收到錯誤 「未定義的方法`[]」爲無:NilClass」

兩個問題:1。 我怎樣才能獲得搜索哈希返回約翰·史密斯(不存儲在數據庫中,而無需修改最初的Facebook的API查詢) 2.是否有可能使用的「Like」而不是「==」,以便返回包含單詞的結果?

謝謝!

回答

1

您正在獲取"undefined method [] for nil:NilClass",因爲您錯誤地使用了方法select。嘗試這樣做:

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

所以我相信這會回答你的第一個問題。您不需要在數據庫中存儲任何內容,但在實例變量@friends中,並正確使用選擇。

關於第二個問題,我認爲你應該考慮的正則表達式,因爲它真的取決於你的意思是不「喜歡」,但如果你說你想要的:

它返回一個包含結果這個單詞?

好吧,如果你想查詢一個單詞(比方說史密斯),你會做的選擇爲:

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

這將使你的陣列上的所有元素,其名稱包括字史密斯

+0

真棒。它做到了。謝謝! – user749798