使用带有Savon gem参数的多个参数

时间:2015-08-07 13:32:58

标签: ruby-on-rails ruby xml rubygems savon

我没有通过savon gem传递多个参数并赋予它们属性来获得预期的结果。

输入:

message: {
        parameterId: 'timePeriod',       
        :query => [[:parameter=>{:@KeyId=>'geo', :@Value=>'528'}],
                  [:parameter=>{:@KeyId=>'timeType', :@Value=>'5'}]]     
      }

实际输出:

 <env:Body>
    <tns:DiscoverParameterValues>
      <tns:parameterId>timePeriod</tns:parameterId>
      <tns:query>
        <element>
          <parameter KeyId="geo" Value="528"/>
        </element>
      </tns:query>
      <tns:query>
        <element>
          <parameter KeyId="timeType" Value="5"/>
        </element>
      </tns:query>
    </tns:DiscoverParameterValues>
  </env:Body>
</env:Envelope> 

预期产出:

<env:Body>
    <tns:DiscoverParameterValues>
      <tns:parameterId>timePeriod</tns:parameterId>
      <tns:query>
          <parameter KeyId="geo" Value="528"/>
          <parameter KeyId="timeType" Value="5"/>
      </tns:query>
    </tns:DiscoverParameterValues>
  </env:Body>
</env:Envelope> 

1 个答案:

答案 0 :(得分:0)

你想制作一个哈希数组。然后,Savon将为阵列中的每个项目复制它。

query: {
  parameter: [
    {:@KeyId=>'geo', :@Value=>'528'}, 
    {:@KeyId=>'timeType', :@Value=>'5'}
  ]
}

我在这里找到了这个答案 - https://github.com/savonrb/savon/issues/713谢谢glennfu。