我正在尝试将下面的数据传递到 Savon 以作为 XML 发送。
传入一项时效果很好。
当我为添加多个项目时添加 each 语句时,会创建以下错误:
syntax error, unexpected =>, expecting keyword_end
'SalesOrder' => [
有效的代码:
new_or = {
"Order" => {
"AccountCode" => '#{current_user.accode}',
"Properties" => {
"PropertyItem" => [
{
"Name" => "Foo",
"Value" => "Bar",
},
{
"Name" => "Colour",
"Value" => "Green",
}
]
}
"Items" => {
'SalesOrder' => {
'sku' => "SKU-100",
'Quantity' => 10,
'Price' => 10.78,
}
}
} #Close_Order
} #Close new_or
不起作用的代码:
new_or = {
"Order" => {
"AccountCode" => '#{current_user.accode}',
"Properties" => {
"PropertyItem" => [
{
"Name" => "Foo",
"Value" => "Bar",
},
{
"Name" => "Colour",
"Value" => "Green",
}
]
}
"Items" => {
@order.items.each do |item|
'SalesOrder' => [
{
'sku' => item.sku,
'Quantity' => item.qtny,
'Price' => item.price,
},
],
end
}
} #Close_Order
} #Close new_or
我要指出的第一件事是你应该在这种情况下使用map
而不是each
因为否则它不会返回块的捕获结构,只会返回Item
原始记录。
其次,您的语句中有很多语法问题,问题中有一些可能是错别字,因为您说第一部分有效,即使那里也存在一些问题。但是请研究以下我认为是您所追求的结果。
"Items" => @order.items.map { |item|
{
'SalesOrder' => {
'sku' => item.sku,
'Quantity' => item.qtny,
'Price' => item.price
}
}
}
这将导致以下示例
"Items" => [
{
'SalesOrder' => {
'sku' => 10,
'Quantity' => 100,
'Price' => 999
}
},
{
'SalesOrder' => {
'sku' => 20,
'Quantity' => 200,
'Price' => 1299
}
}
]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句