Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails jbuilder空数组删除密钥_Ruby On Rails_Ruby_Jbuilder - Fatal编程技术网

Ruby on rails jbuilder空数组删除密钥

Ruby on rails jbuilder空数组删除密钥,ruby-on-rails,ruby,jbuilder,Ruby On Rails,Ruby,Jbuilder,我的控制器返回@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

我的控制器返回
@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
--我正在使用JBuilder2.7,我建议您使用gem。从jbuilder迁移到jb很简单(我是在生产项目中这样做的)。Jb比jbuilder快几倍,而且没有难看的jbuilder语法,它只是简单的ruby。 你的问题可以在jb中解决

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

json