Rails - неожиданно =>, ожидая keyword_end - Savon - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь передать данные ниже в 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

1 Ответ

0 голосов
/ 11 мая 2018

Первое, что я хотел бы отметить, это то, что в этом сценарии вы должны использовать 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
        }
    }
]
...