Я пытаюсь понять, как использовать методы Jbuilder, встроенные в класс. Я хочу принудительно поместить объект в массив длины один, чтобы он соответствовал ожидаемой спецификации JSON.
Вот пример результатов, которые я хочу (обратите внимание на то, что []
обертывает значение, связанное с sets
):
{
"sets": [{
"set_type": "default_set_type",
"items": [
{
"item_id": "FFFF-0000-111",
"quantity": "1"
}
]
}]
}
Вот мой метод до сих пор:
def to_3pl
@shipment = self
...
Jbuilder.new do |shipment|
# How do I force jbuilder to wrap a single set with []?
shipment.sets do
shipment.set_type 'default_set_type'
shipment.items @shipment.product_options do |product|
shipment.item_id product.product_id.to_s
shipment.quantity product.quantity.to_s
end
end
end
end
А вот JSON, созданный моим методом (обратите внимание, что значение, связанное с sets
, не заключено в []
):
{
"sets": {
"set_type": "default_set_type",
"items": [
{
"item_id": "FFFF-0000-111",
"quantity": "1"
}
]
}
}
Я просмотрел документацию Jbuilder и уверен, что есть способ сделать это, но я не могу кажется, не разобрался. Каков синтаксис, чтобы заставить Jbuilder обернуть один элемент с помощью []
в методе класса?
РЕДАКТИРОВАНИЕ С РЕШЕНИЕМ
Большое спасибо @dddd1919. Вот обновленный метод с успешно реализованной оболочкой массива:
def to_3pl
@shipment = self
...
Jbuilder.new do |shipment|
# Forces jbuilder to wrap the object with []
shipment.sets Jbuilder.new.array!(['']) do |set|
shipment.set_type 'default_set_type'
shipment.items @shipment.product_options do |product|
shipment.item_id product.product_id.to_s
shipment.quantity product.quantity.to_s
end
end
end
end