2

親とサブクラスの両方のオブジェクトを含むフィードがあり、RABL を使用して json にレンダリングします。json にルート オブジェクトを含めます。

問題はこれです => 最初に来るものに応じて、json のルート ノードが対応するクラスで生成されます。

親クラスのすべてである必要があります。

以下の例:

Class Klass
 ...

Class SubclassOfKlass < Klass
 ...

k = Klass.create
s = SubclassOfKlass.create

array1 = [k,s]
Rabl::Renderer.json(nil, 'answers/list', view_path: 'app/views', locals: {object: array1})

## results will render everything as "Klass" objects
## [{\"klass\":{\"_id\":\"1\"},{\"klass\":{\"_id\":\"2\"}]

array2 = [s,k]
Rabl::Renderer.json(nil, 'answers/list', view_path: 'app/views', locals: {object: array1})

## results will render everything as "SubclassOfKlass" objects
## [{\"subclass_of_klass\":{\"_id\":\"1\"},{\"subclass_of_klass\":{\"_id\":\"2\"}]

### But I need the root to be always "klass" and not "subclass_of_klass"

rabl は次のとおりです (非常に簡単です)。

# list.rabl
collection @answers
extends "answers/show"

#show.rabl
if @user
  node(:context_string) { |a| a[:context_string]}
  node(:notebook) do |a|
    if a.class == SubclassOfKlass
      a.notebook
    end
  end
end

extends "klasses/cache"
4

1 に答える 1

3

わかりました、答えはかなり簡単です。

collection @answers, :object_root => "answer"
于 2013-03-27T06:42:31.410 に答える