我的控制器返回@quotes
,它可以是一个空数组。
然后我呈现以下视图。
json.set! :quotes do
@quotes.each do |quote|
json.set! quote.id do
json.id quote.id
json.symbol quote.symbol
json.price quote.price
json.datetime quote.datetime
end
end
end
这通常会导致
"quotes": {
"123": {
"id": 123,
"symbol": "AAPL",
"price": 100,
"datetime": "2019-12-31T16:00:00.000Z"
},
但是如果@quotes是一个空数组,则响应为
{}
我想要的时候
{
"quotes": {}
}
是否有一种无需明确检查对象是否为空即可实现我的目标的方法?
我不想想做
if @quotes.empty?
json.quotes({})
else
-我正在使用Jbuilder 2.7
我建议您使用jb宝石。从jbuilder迁移到jb很简单(我在生产项目中就这样做了)。 Jb比jbuilder快几倍,而且没有丑陋的jbuilder语法,它只是纯红宝石。您的问题可以在jb中解决
json = { quotes: {} }
@quotes.each do |quote|
json[:quotes][quote.id] = {
...
}
end
json