Как я могу создать эту структуру JSON с помощью JBuilder и Rails?

TL;DR: Как я могу использовать jbuilder для создания JSON, который выглядит так?

[
  {}, // Your new pagination state
  [{}, ...] // An array of JSON objects
]

Более длинная версия:

Я пытаюсь заставить разбиение на страницы работать с Backbone.js и backbone-pageable https://github.com/wyuenho/backbone-pageable .

Backbone-pageable требует, чтобы возвращаемый JSON был отформатирован таким образом, чтобы он представлял собой массив из двух объектов. Первый объект — это обычный объект, содержащий управляющую информацию о разбиении на страницы. Второй объект должен быть массивом ваших фактических данных, отформатированных так, как обычно ожидает Backbone. Эти ожидания жестко закодированы в методах разбора backbone-pageable (источник)

Кажется странным иметь массив не похожих друг на друга элементов, но для этого варианта использования это кажется приемлемым.

Для json я использовал rabl в прошлом, но для науки я пытаюсь использовать jbuilder, и я зашел так далеко...

Структура JSON (неверно):

{
  "current_page": 1,
  "total_pages": 6,
  ...,

  "entries": [
    { "id": 131 },
    ...
  ]
}

Используя этот код:

json.current_page @posts.current_page
...

json.entries @posts do |post|
  json.extract! post, :id...
end

Ближе, но все равно очень неправильно :/

Спасибо


person CharlesHorse    schedule 19.05.2013    source источник


Ответы (1)


Можете ли вы попробовать это:

json.array! [0,1] do |index|
  if index == 0
    json.current_page @posts.current_page
    ...

  else
    json.entries @posts do |post|
      json.extract! post, :id...
    end
  end
end
person sites    schedule 19.05.2013
comment
Спасибо, что ответили на мой вопрос. Это странный способ сделать это, но он будет работать, поэтому я отметил его как правильный. - person CharlesHorse; 13.06.2013