Ruby on rails 在Rails、主干和Mustache格式中使用JSON似乎有所不同

Ruby on rails 在Rails、主干和Mustache格式中使用JSON似乎有所不同,ruby-on-rails,json,backbone.js,mustache,Ruby On Rails,Json,Backbone.js,Mustache,我正在尝试组装一个Rails应用程序,带有backbone.js和mustache模板。我发现主干所需的JSON与Mustach所需的JSON不兼容。(我开始学习本教程,但我想在他使用JST的地方使用Mustach 对于主干网,我们必须设置ActiveRecord::Base.include_root_in_json=false。对于我的模型(名字和姓氏的人),rails从/people发送的数据如下所示: [{"firstname":"Jane","surname":"Jones"},{"fi

我正在尝试组装一个Rails应用程序,带有backbone.js和mustache模板。我发现主干所需的JSON与Mustach所需的JSON不兼容。(我开始学习本教程,但我想在他使用JST的地方使用Mustach

对于主干网,我们必须设置ActiveRecord::Base.include_root_in_json=false。对于我的模型(名字和姓氏的人),rails从/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>
我的胡子模板如下所示:

[{"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>
编辑了我将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']的值是正确的

  • 看来我在这里都混在一起了……那么我做错了什么?我该如何解决它呢?

    我现在有了某种解决方案(多亏了)


    但我觉得这样的跳跃似乎没有必要。我将检查车把是否提供更好的功能。

    一个更简单的解决方案是在这里记录的集合中使用
    toJSON


    你能提供用于初始化模板的代码吗?啊,我想你已经准备好了,我回家后重新开始,而不是尝试使用现有的应用程序。发现了一个小问题,但最终归结为同一件事:Mustach在object.firstname中查找数据,但数据在object.firstname.attributes中@yves-不确定用于初始化模板的代码是什么意思?在我干净的尝试中,我将模板直接放入传递给Mustache的变量中。因此:tpl=“…”;out=Mustache。to_html(tpl,collection)这也为我解决了这个问题。你发现了更好的方法吗?Mustache是用于主干的错误工具吗?
    out = Mustache.to_html(tpl, collection.toJSON);