2014-11-17 4 views
0

단일 및 집계의 두 가지 유형의 끝점이있는 API를 작성하고 있습니다. 그러나 나는 집계 RABL보기와 사투를 벌인거야,RABL에서 JSON을 사용자 정의 "포함"하는 방법은 무엇입니까?

# cat_view.json.rabl 
object @cat 
attributes :name 

# dog_view.json.rabl 
object @dog 
attributes :name 

예상대로이 일을 : 나는 아래, 하나의 엔드 포인트에 대한 RABL의 전망을 감상하실 수 있습니다. 내가 원하는 JSON 구조는 다음과 같습니다

{ 
    'cats': { 
    'details': [{'name': 'Mittens'}, 
       {'name': 'Mr. Wiskers'}, 
       {'name': 'Crookshanks'}], 
    'count' : 3 
    }, 
    'dogs': { 
    'details': [{'name': 'Rover'}, 
       {'name': 'Fido'}], 
    'count' : 2 
    } 
} 

나의 현재 집계 RABL보기는 다음과 같습니다

{'cats': [{'name': Mittens'}, 
       {'name': Mr. Wiskers'}, 
       {'name': Crookshanks'}], 
    'cat_count': 3, 
    'dogs': [{'name': 'Rover'}, 
      {'name': 'Fido'}], 
    'dog_count': 2} 

내 질문 :

이 JSON 결과

# animals.json.rabl 
child @cats do 
    collection @cats, :object_root => false 
    extends "cat_view" 
end 
node(:cat_count) { @cats.count } 

child @dogs do 
    collection @dogs, :object_root => false 
    extends "dog_view" 
end 
node(:dog_count) { @dogs.count } 

animals.json.rabl을 보려면 어떻게해야합니까 위에서 설명한 JSON 구조?

답변

2

details 키를 추가하기 위해, 기존의 child @cats 블록 details 이름 :

# animals.json.rabl 
child :cats do 
child @cats => :details do 
    collection @cats, :object_root => false 
    extends "cat_view" 
    node(:count) { @cats.count } 
end 
end 

child :dogs do 
child @dogs => :details do 
    collection @dogs, :object_root => false 
    extends "dog_view" 
    node(:count) { @dogs.count } 
end 
end 
: 질문의 중첩 부분에 대한

child @cats => :details do 
    collection @cats, :object_root => false 
    extends "cat_view" 
    node(:count) { @cats.count } 
end 

을 새 포장 자식 블록을 생성하여이 작업을 수행 할 수 있습니다

관련 문제