Rails - 意外 =>,期待 keyword_end - Savon
Rails - unexpected =>, expecting keyword_end - Savon
我正在尝试将以下数据传递到 Savon 以作为 XML 发送。
传入一项时工作正常。
当我为添加多个项目添加每个语句时,会产生以下错误:
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
因为否则它不会 return 块的捕获结构,只有原始 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
}
}
]
我正在尝试将以下数据传递到 Savon 以作为 XML 发送。
传入一项时工作正常。
当我为添加多个项目添加每个语句时,会产生以下错误:
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
因为否则它不会 return 块的捕获结构,只有原始 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
}
}
]