我的 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
https://stackoverflow.com/questions/60301277/
相关文章:
linux - 将.net core 3.1 Web应用部署到Azure Linux应用服务
typescript - 当我尝试使用对象解构结果的变量时,TS 无法识别其类型
node.js - 如何以只读模式获取Draft js中的链接?
swift - 您可以将键盘快捷键绑定(bind)到 Xcode 中的换行吗?
javascript - Jest/ react - TypeError : Cannot read
python - OpenCV VideoWriter 写入损坏的视频文件
python - Kivy Filechooser 在屏幕上滚动重叠文本