с использованием JSON в Rails, Backbone и Mustache - форматы кажутся разными

Я пытаюсь собрать приложение Rails с backbone.js и шаблонами усов. Я обнаружил, что JSON, требуемый backbone, несовместим с JSON, необходимым для Mustache. (Я начал с этого руководства Cloudedit -a backbone.js tutorial на примере , но я хочу использовать Mustache там, где он использует JST.

Для магистрали мы должны установить ActiveRecord :: Base.include_root_in_json = false. Для моей модели (человек с именем и фамилией) данные, отправленные по рельсам от / people, выглядят так:

[{"firstname":"Jane","surname":"Jones"},{"firstname":"Janet","surname":"Jensen"}]

Мой шаблон усов выглядит так:

Create New

People

    {{#people}}
  • {{firstname}} {{surname}}
  • {{/people}}

и из документов усов я ожидаю, что он хочет видеть

{"people":[{"firstname":"Jane","surname":"Jones"},{"firstname":"Janet","surname":"Jensen"}]}

Отредактировал меня, преобразовав коллекцию JS обратно в JSON и отправив в Mustache. Не нужно этого делать. Mustache.js ожидает увидеть объекты js, а не строки JSON.

К тому времени, как я доберусь до Mustache.to_html, у меня будет базовая коллекция моделей. У моделей есть атрибуты имя и фамилия . В firebug это выглядит так:

collection
  +_byCid
  +_byId
   length 2
  - models  [object { attributes=(...), more...}, object {attributes=(...), more...}]
    - 0 object { attributes=(...), more...}
      ....... some more properties of the object
        + attributes object {firstname="Janet", surname="Jensen"}

Кажется, здесь есть пара проблем. 1. Нет упоминания названия коллекции (людей). Думаю, я могу обойти это разными способами, по крайней мере, используя {{#models}} .. {{/ models}} в шаблоне.

  1. Атрибуты скрыты глубже, чем выглядит Mustache.js. Когда он переходит к попытке найти тег 'firstname' в объекте, он ищет объект ['firstname'] и не находит его, но object.attributes ['firstname'] имеет правильное значение.

Кажется, я тут все запутался .... Так что я делаю не так? И как это исправить?

5
задан Anita Graham 3 July 2011 в 10:29
поделиться