【问题标题】:Search hash results for similar matches rails 3搜索类似匹配的哈希结果 rails 3
【发布时间】:2012-07-04 22:50:01
【问题描述】:

我正在使用 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.我怎样才能得到哈希的搜索返回约翰史密斯(不存储在数据库中,不修改初始Facebook API查询) 2. 是否可以使用“Like”而不是“==”来返回包含单词的结果?

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    它返回包含单词的结果?

    好吧,如果你想检查一个特定的词(比如 Smith),你可以这样选择:

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

    这将为您提供数组中 name 包含单词 Smith 的所有元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多