Ruby Linkedin Gem人们使用嵌套的字段选择器进行搜索

时间:2012-01-30 16:10:28

标签: ruby-on-rails ruby ruby-on-rails-3.1 rubygems linkedin

我正在使用这个非常好的LinkedIn ruby​​ gem(https://github.com/pengwynn/linkedin)进行我的一个项目,并且在过去的一天里陷入了非常痛苦的境地。

我正在进行人员搜索并使用嵌套字段选择器作为“人员”资源。我的查询看起来像这样:

@client.search(:fields => [ { :people => %w(id first-name api-standard-profile-request) } ], :keywords => 'some keywords')

我收到了一个错误的URI异常

bad URI(is not URI?): /people-search:({:people=>["id", "first-name", "api-standard-profile-request"]})

当然这不是URL应该是什么样的。它应该像

/people-search:(people:(id,first-name,api-standard-profile-request))

在github上花了一些时间并浏览代码之后,我就能理解gem是如何生成路径的。在search.rb文件中:

def field_selector(fields)
    result = ":("
    fields = fields.to_a.map do |field|
      if field.is_a?(Hash)
        innerFields = []
        field.each do |key, value|
          innerFields << key.to_s.gsub("_","-") + field_selector(value)
        end
        innerFields.join(',')
      else
        field.to_s.gsub("_","-")
      end
    end
    result += fields.join(',')
    result += ")"
    result
  end

其中字段是我传递给搜索方法的数组。

奇怪的是,当我在控制台中运行这段代码(field_selector方法)时,我的 fields 数组作为输入,我得到了所需的输出!

我完全迷失了为什么我收到错误,并且不知道如何解决它。任何指针都会很棒!

谢谢!

2 个答案:

答案 0 :(得分:1)

您的代码对我有用。尝试将您的gem升级到2-0分支。将其添加到您的gem文件中: gem' linkedin',:git =&gt; 'http://github.com/pengwynn/linkedin.git',: branch =&gt; '2-0-稳定'

答案 1 :(得分:0)

我知道这有点晚了,但在测试中有描述:

https://github.com/hexgnu/linkedin/blob/master/spec/cases/search_spec.rb#L163