jbuilder空数组删除键

问题描述 投票:0回答:1

我的控制器返回@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

ruby-on-rails ruby jbuilder
1个回答
0
投票

我建议您使用jb宝石。从jbuilder迁移到jb很简单(我在生产项目中就这样做了)。 Jb比jbuilder快几倍,而且没有丑陋的jbuilder语法,它只是纯红宝石。您的问题可以在jb中解决

json = { quotes: {} }
@quotes.each do |quote|
  json[:quotes][quote.id] = {
    ...
  }
end

json
© www.soinside.com 2019 - 2024. All rights reserved.