【发布时间】:2014-12-25 23:24:24
【问题描述】:
我正在尝试了解如何在类中内联使用 Jbuilder 方法。我想将一个对象强制放入一个长度为 1 的数组中以匹配预期的 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 docs,并且确信有办法做到这一点,但我似乎无法弄清楚。强制 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
【问题讨论】:
标签: ruby-on-rails json jbuilder