Я пытаюсь собрать приложение Rails с backbone.js и шаблонами усов.Я обнаружил, что JSON, требуемый магистралью, не совместим с JSON, требуемым Усиком.(Я начал с этого урока Cloudedit -a backbone.js на примере , но я хочу использовать Усы там, где он использует JST.
Для магистрали мы должны установить ActiveRecord :: Base.include_root_in_json = false. Для моей модели (человек с именем и фамилией) данные, отправленные рельсами из / people, выглядят так:
[{"firstname":"Jane","surname":"Jones"},{"firstname":"Janet","surname":"Jensen"}]
Мой шаблон усов выглядит так:
<h3><a href='#new'>Create New</a></h3>
<h4>People</h4>
<ul>
{{#people}}
<li>{{firstname}} {{surname}}</li>
{{/people}}
</ul>
и из документов с усами, я ожидаю, что он хочет увидеть:
{"people":[{"firstname":"Jane","surname":"Jones"},{"firstname":"Janet","surname":"Jensen"}]}
Отредактировал меня, преобразовав коллекцию JS обратно в JSON и отправив в Mustache. Не нужно этого делатьMustache.js ожидает увидеть объекты js, а не строки JSON.
К тому времени, когда я добираюсь до Mustache.to_html, у меня есть базовая коллекция моделей. Модели имеют атрибуты firstname и фамилия . В 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}} в шаблоне.
- Атрибуты скрыты глубже, чем Mustache.jsвыглядит.Когда он пытается найти тег «firstname» в объекте, он ищет объект ['firstname'] и не находит его, но object.attributes ['firstname'] имеет правильное значение.
Кажется, я здесь все перепутал ... Так что же я делаю не так?И как я могу это исправить?