24

RABLを使用して非常に単純なデータ構造をレンダリングしようとしていますが、子ルートノードを適切に削除する方法がわかりません。これが私の2つのテンプレートです。

まず、コレクションインデックステンプレート。

collection @groups, :object_root => false

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

そして次に、ファイル部分テンプレート。

object @file

attributes :id

これらの2つのテンプレートは、最終的に次のJSONを生成します。

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

ファイルコレクション内のルート「ファイル」キーを削除する方法を見つけたいと思います。何かのようなもの:

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

4 に答える 4

48

Rablの最新バージョンでは、すべてのレベルinclude_root_jsonになりたい場合は、この構成を設定する必要があります。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を指定するのではなく)

config / initializers / 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 に答える