如何在Ruby中将Array作为参数传递给SOAP

jet*_*hro 2 ruby soap savon

目前我正在使用Savon在ruby中使用WebService.它工作得很好,但我很难为SOAP数组类型的参数传递参数.以下代码无法正常运行:

ids = [0,1,2]
client.do_get_items { |soap| soap.body = {
    'item-list' => ids
}
Run Code Online (Sandbox Code Playgroud)

如果您能解决我的问题或提出红宝石和肥皂的替代库,我将不胜感激

小智 7

我只是偶然发现同样的问题,对我有用的临时解决方法如下:

ids = [0,1,2]
client.do_get_items { |soap| soap.body = {
  'item-list' => {
    'item1' => 0,
    'item2' => 1,
    'item3' => 2
  }  
}
Run Code Online (Sandbox Code Playgroud)

名称"item1","item2"应该无关紧要.

我使用以下帮助器方法将常规数组转换为SOAP混乱:

def soap_array(array)
  returning({}) do |hash|
    array.each_with_index do |e, i|
      hash["item-#{i}"] = e
    end
  end
end
Run Code Online (Sandbox Code Playgroud)