Я использую этот очень хороший рубиновый драгоценный камень LinkedIn (https://github.com/pengwynn/linkedin) для моего проекта), и застрял в очень болезненной точке за последние 1 день.
Я выполняю поиск людей и использую селектор вложенных полей для ресурса "люди". Мой запрос выглядит примерно так:
@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 и пройдя через код, я мог понять, как путь был сгенерирован гемом. В файле 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 в качестве входных данных, я получаю желаемый вывод!
Я совершенно не понимаю, почему я получаю ошибку, и не знаю, как ее исправить. Любые указатели были бы великолепны!
Спасибо!