【问题标题】:jbuilder empty array removes keyjbuilder空数组删除键
【发布时间】:2020-06-03 16:15:21
【问题描述】:

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

    我建议你使用jb gem。从 jbuilder 迁移到 jb 很简单(我在生产项目中这样做)。 jb 比 jbuilder 快几倍,并且没有难看的 jbuilder 语法,它只是普通的 ruby​​。 你的问题可以在jb中解决

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

    【讨论】:

      猜你喜欢
      • 2018-03-01
      • 2023-03-11
      • 2013-01-29
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多