24

我正在尝试使用 RABL 呈现一个非常简单的数据结构,但我无法弄清楚如何正确删除子根节点。这是我的两个模板。

一是集合索引模板。

collection @groups, :object_root => false

attributes :id, :name
child :files do
  extends 'groups/_file'
end

接下来是文件部分模板。

object @file

attributes :id

这两个模板最终生成以下 JSON:

[
   {
      "id":"4f57bf67f85544e620000001",
      "name":"Some Group",
      "files":[
         {
            "file":{
               "id":"4f5aa3fef855441009000007"
            }
         }
      ]
   }
]

我想找到一种方法来删除文件集合中的根“文件”键。就像是:

[
   {
      "id":"4f57bf67f85544e620000001",
      "name":"Some Group",
      "files":[
         {
            "id":"4f5aa3fef855441009000007"
         }
      ]
   }
]
4

4 回答 4

48

include_root_json在最新版本的 Rabl 上,如果您想false在所有级别中,您必须设置此配置。

Rabl.configure do |config|
  config.include_json_root = false
  config.include_child_root = false
end
于 2012-07-06T19:08:04.487 回答
12

尝试更换:

    child :files do
      extends 'groups/_file'
    end

和:

    node :files do |group|
      group.files.map do |file|
        partial 'groups/_file', object: file, root: false
      end
    end
于 2012-03-14T08:12:52.510 回答
2

这是删除根 json 的常用方法(而不是指定 object_root: false)

配置/初始化程序/rabl_config.rb

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

将它移到那里(并重新启动导轨),修复它吗?

于 2012-03-13T01:43:52.287 回答
0

只是把它放在那里,以防你想将它应用于特定的孩子:

child :files, :object_root => false do
  extends 'groups/_file'
end
于 2014-06-22T16:44:57.713 回答