Ruby on rails 主干模型中没有属性

Ruby on rails 主干模型中没有属性,ruby-on-rails,json,backbone.js,marionette,rabl,Ruby On Rails,Json,Backbone.js,Marionette,Rabl,我在看一个来自http://www.backbonerails.com/ 看起来完全一样。 让我从我的应用程序中为您绘制一张图片: 路线: routes.rb: 控制器: 回答 这是我得到的回应http://localhost:3000/conferences.json: 主干模型 这是应该从这里获取的主干模型: @Mario.module "Entities", (Entities, App, Backbone, Marionette, $, _) -> class Entitie

我在看一个来自http://www.backbonerails.com/ 看起来完全一样。 让我从我的应用程序中为您绘制一张图片:

路线: routes.rb:

控制器: 回答 这是我得到的回应http://localhost:3000/conferences.json:

主干模型 这是应该从这里获取的主干模型:

@Mario.module "Entities", (Entities, App, Backbone, Marionette, $, _) ->

  class Entities.Conference extends Backbone.Model
    defaults:
      title: ''

  class Entities.ConferenceCollection extends Backbone.Collection
    model: Entities.Conference
    url: '/conferences.json'
…最后是JS控制台: 这就是我在js控制台中得到的结果:

cc=新的Mario.Entities.ConferenceCollection

▹ConferenceCollection{length:0,models:Array[0],_byId:Object,constructor:function,model:function…}

抄送

此时,rails服务器从log/development.log做出响应

返回js控制台:

抄送模型[0]

▹会议{cid:c6,属性:对象,集合:ConferenceCollection,_changing:false,_previousAttributes:Object…}

cc.models[0]。属性

等等等等。 这些显然不是定义的模型属性

到底发生了什么事?这应该很简单。我一定错过了什么,但是什么?为什么主干网不将正确的JSON结构解释为模型的属性?

看一看-这对您来说应该很有趣:

config.include_json_root = false

我想你必须在你的配置中更改它,你应该可以开始了。

像往常一样,我花了一整天的时间试图修复它,在我发布一个问题后,我找到了一个修复方法

好的,问题不在应用程序的上述部分。在我的资产管道中,我包含了一个允许将属性包装在paramRoot中的参数,这样当您执行model.save时,进入rails控制器的参数如下所示:

{会议=>{title=>新会议,类别=>超级会议},操作=>创建,控制器=>会议}

而不是

{title=>new conference,category=>super conferences,action=>create,controller=>conferences}

这个特别的同步补丁完全把我甩了

解决方案:
经过不多的深思熟虑,我用一种不同的方法代替了它。现在一切都正常了,我的参数仍然正确包装。

我总是忘记这一点,但这次已经完成了。看看我帖子的“回复”部分,那里没有根对象。我检查了三次。是的,有,但是cc.models[0].attributes.models包含与cc.models[0]相同的对象,这意味着您可以无限期地执行cc.models[0].attributes.models[0].attributes等操作
collection @conferences
attributes :id, :title
node(:date_from){|c| I18n.l c.date_from, format: :short}
node(:date_to){|c| I18n.l c.date_to, format: :short}
node(:lectures) do |c|
  c.lectures_by_day.map do |l|
    partial 'lectures/base', object: l
  end
end
[
  {
    "id": 1,
    "title": "Ruby on Rails for Dummies",
    "date_from": "11 Dec 12:00",
    "date_to": "13 Dec 17:00",
    "lectures": []
  }
]
@Mario.module "Entities", (Entities, App, Backbone, Marionette, $, _) ->

  class Entities.Conference extends Backbone.Model
    defaults:
      title: ''

  class Entities.ConferenceCollection extends Backbone.Collection
    model: Entities.Conference
    url: '/conferences.json'
2013-12-11T18:07:55+01:00 [ INFO] 40497 : Started GET "/conferences.json" for 127.0.0.1 at 2013-12-11 18:07:55 +0100
2013-12-11T18:07:55+01:00 [ INFO] 40497 : Processing by ConferencesController#index as JSON
2013-12-11T18:07:55+01:00 [DEBUG] 40497 :   Conference Load (0.2ms)  SELECT "conferences".* FROM "conferences"
2013-12-11T18:07:55+01:00 [DEBUG] 40497 :    (0.1ms)  SELECT COUNT(*) FROM "lectures" WHERE "lectures"."conference_id" = 1 AND ("lectures"."date_from" BETWEEN '2013-12-11' AND '2013-12-12')
2013-12-11T18:07:55+01:00 [ INFO] 40497 :   Rendered conferences/index.json.rabl (14.2ms)
2013-12-11T18:07:55+01:00 [ INFO] 40497 : Completed 200 OK in 20ms (Views: 18.3ms | ActiveRecord: 0.5ms)
▽attributes: Object
  ▹_byId: Object
  ▹_onModelEvent: function (event, model, collection, options) {
  ▹_prepareModel: function (attrs, options) {
  ▹_removeReference: function (model) {
  ▹_reset: function () {
  ▹add: function (models, options) {
  ▹all: function () {
  ▹any: function () {
  ▹at: function (index) {
  ▹bind: function (name, callback, context) {
  ▹chain: function () {
  ▹clone: function () {
  ▹collect: function () {
  ...
config.include_json_root = false