RABL:没有根密钥的JSON对象

时间:2012-02-21 23:13:15

标签: ruby-on-rails json rabl

我有这个兔子模板:

object @photo
attributes :id
child :comments do
  attributes :id, :body
end

这给了我这个JSON响应:

{
  photo: {
    id: 1,
    comments: [
      { 
        comment: {
          id: 1,
          body: 'some comment'
        }
      },
      { 
        comment: {
          id: 2,
          body: 'another comment'
        }
      }
    ]
  }
}

但我希望它看起来像这样:

{
  id: 1,
  comments: [
    { 
      id: 1,
      body: 'some comment'
    },
    { 
      id: 2,
      body: 'another comment'
    }
  ]
}

为什么rabl用一个名为comment的额外对象包裹数组中的每个元素。这样,当我在javascript中访问集合时,我必须写:

var comment = image.comments[0].comment

而不是:

var comment = image.comments[0]

我知道如果我在:comments对象的属性列表中包含@photo,它就会按照我想要的方式工作,但是当我需要为每个comment对象建立另一级别的嵌套关联时除了使用child之外,没有办法处理它,但这给了我不想要的JSON响应。

也许我只是误解了整个事情 - 有人可以解释或帮助吗?谢谢!

1 个答案:

答案 0 :(得分:7)

知道了!

config/initializers/rabl_config.rb中创建一个新文件:

Rabl.configure do |config|
  config.include_json_root = false
  config.include_child_root = false

end