ruby-on-rails - jbuilder 空数组删除键

标签 ruby-on-rails ruby jbuilder

我的 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/

相关文章:

ruby-on-rails - Rabl、Jbuilder 还是手动 json 构建 API?

ruby-on-rails - 需要实现#cache!如果你想使用 Cloudinary::CarrierWave::Storage 作为缓存存储

javascript - Braintree Drop-In UI 需要重新加载才能正常工作

ruby-on-rails - 实现用户角色及其独特的列

Python 相当于 Ruby 的 .select

ruby - 如何将任何方法转换为ruby中的中缀运算符

ruby-on-rails - 升级到 Rails 5 后替换 ActionDispatch::ParamsParser

ruby - 如何在 Ruby 上引用这个?

ruby-on-rails - Rails - 使用 jbuilder 时的空白 json 文件

ruby-on-rails - 如何组合不同的 json jbuilder View ?