我的 Controller 返回@quotes
,它可以是一个空数组。
然后我呈现以下 View 。
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 gem 。从 jbuilder 转移到 jb 很简单(我是在生产项目上做的)。 Jb 比 jbuilder 快几倍并且没有丑陋的 jbuilder 语法,它只是普通的 ruby。 你的问题在jb可以解决
json = { quotes: {} }
@quotes.each do |quote|
json[:quotes][quote.id] = {
...
}
end
json
关于ruby-on-rails - jbuilder 空数组删除键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60301277/