Я пытаюсь настроить ответ RABL API. У меня есть коллекция игр, и в каждой игре есть несколько игроков. Пока мои игроки хранятся в массиве, но мне нужно получить к ним доступ с помощью ключа, поэтому я хотел бы настроить свой ответ json.Rails Rabl - Пользовательские ключи массива
Вот мой base.rabl
файл:
collection @games
attributes :id
child(:players) do |a|
attributes :id, :position
end
Это то, что я получаю:
[
{
id: 1,
players: [
{
id: 27,
position: 'goalkeeper'
},
{
id: 32,
position: 'striker'
},
{
id: 45,
position: 'defender'
}
]
}
]
И это то, что я пытаюсь получить:
[
{
id: 1,
goalkeeper: {
id: 27
},
striker: {
id: 32
},
defender: {
id: 45
}
}
]
Сейчас Я не могу найти способ отображать игроков, кроме массива объектов.
Может ли кто-нибудь дать мне хит? Я пробовал много конфигураций RABL, но без успеха сейчас ...
EDIT:
Я изменил атрибуты, так что более явным. Каждая игра имеет множество игроков, и каждый игрок имеет другую позицию.
Для того, чтобы добавить больше деталей, чтобы вы могли понять, что я пытаюсь достичь, вот моя лучшая попытка:
base.rabl файл:
object @games
@games.each do |game|
node(:id) { |_| game.id }
game.players.each do |player|
if (player.position == 'goalkeeper')
node(:goalkeeper) { |_| player.id }
elsif (player.position == 'striker')
node(:striker) { |_| player.id }
end
end
end
И это то, что я получаю :
[
{
id: 1,
goalkeeper: {
id: 27
},
striker: {
id: 32
}
},
{
id: 1,
goalkeeper: {
id: 27
},
striker: {
id: 32
}
}
]
Структура - это то, что я хочу, но каждая возвращенная игра такая же. Если мой результат запроса содержит 4 игры, она возвращает 4 игры, но они все-таки ...
Спасибо за ваш ответ. Но в моем случае это не сработает. Я редактировал свой пост, чтобы добавить более подробную информацию, чтобы вы могли более точно понять, чего я пытаюсь достичь. – alskaa
Я думаю, что вы не понимаете концепцию rabl 'collection' и' object. Я обновил свой ответ на примере с контроллера. – Leantraxxx
Вы правы, это первый проект, в котором я использую rabl, и я не использовал его правильно. Теперь я думаю, что понимаю :) Большое спасибо за ваш подробный ответ, это мне очень помогло! – alskaa