搜索类似的匹配rails 3的哈希结果

时间:2012-07-04 22:50:02

标签: ruby-on-rails ruby-on-rails-3 search hash

我正在使用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”

两个问题: 1.如何搜索哈希值以返回John Smith(不存储在数据库中,也无需修改初始Facebook API查询) 2.是否可以使用“Like”而不是“==”,以便返回包含单词?

的结果

谢谢!

1 个答案:

答案 0 :(得分:1)

您收到"undefined method [] for nil:NilClass",因为您错误地使用了方法select。试着这样做:

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

所以我相信这回答了你的第一个问题。您不需要在数据库中存储任何内容,而是在实例变量@friends中存储,并正确使用select。

关于第二个问题,我相信你应该研究正则表达式,因为它实际上取决于“喜欢”是什么意思,但如果你说你想要:

  

它返回包含单词?

的结果

好吧,如果你想检查一个特定的单词(让我们说史密斯),你可以选择:

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

这将为您提供数组中名称包含 Smith 一词的所有元素。