2013-06-26 5 views
0

У меня есть следующий файл RABL в моей Rails 3.2 приложения:Rails JSON с использованием RABL с указанием родительского атрибута?

collection @results.limit(5) 

attributes :date, :client_id 

child :client do 
    attributes :Surname 
end 

child :animal do 
    attributes :AnimalName 
end 

Я хотел бы добавить имя пользователя, что результат принадлежит. Все, что я прочитал в документации RABL, похоже, предлагает только child и node.

Как я могу получить атрибут родителей в вышеуказанном коде? Очевидно, что делать следующие NULL.

child :animal do 
    attributes :AnimalName 
end 

Возможно ли это?

токовый выход JSON:

{ 
date: "2013-06-25T19:36:11+01:00", 
client_id: 88172, 
client: { 
Surname: "Strange" 
}, 
animal: { 
AnimalName: "Ria" 
} 
}, 

Желаемый результат:

{ 
date: "2013-06-25T19:36:11+01:00", 
client_id: 882372, 
client: { 
Surname: "Summer" 
}, 
animal: { 
AnimalName: "Ria" 
}, 
user: { 
UserName: "Danny" 
} 
}, 

ответ

0

Вы можете добавить пользовательский узел, который добавляет в данные пользователя:

collection @results.limit(5) 

attributes :date, :client_id 

node :user do |report| 
    partial('users/show', :object => report.user) 
end 

Это предполагается, что вы хотите весь шаблон пользователя/показать.

Если вы просто хотите ключевое имя/значение:

node :user do |report| 
{ :name => report.user.name } 
end 
+0

Спасибо за предложения, я добавил ожидаемый JSON на мой вопрос. – dannymcc

+0

В настоящее время я пытаюсь использовать метод «Добавить пользователя как дочерний», я добавил файл show.json.rabl среди пользователей и добавил ваш пример кода. Он просто возвращает 'null'. Я не могу понять это! – dannymcc

+0

Похоже, что опция 'extends' предназначена только для шаблонов наборов атрибутов, но не содержит никаких данных. Результаты.json просто возвращает 'user: null'. – dannymcc