Ember.js Emberjs+;Rails-TypeError:无法调用方法';拥有自己的财产';未定义的类型(无法发布到Rails DB)

Ember.js Emberjs+;Rails-TypeError:无法调用方法';拥有自己的财产';未定义的类型(无法发布到Rails DB),ember.js,ember-data,ember-rails,Ember.js,Ember Data,Ember Rails,我正试图用Emberjs和ember数据将一条新记录发布到Rails数据库中;但是,我得到以下错误: TypeError{}“无法调用未定义的方法'hasOwnProperty'” 我一直遵循的例子,并试图建立我自己的应用程序使用相同的概念,根据例子。更不用说,我已经使用了调试器;在我的控制器中,当我在控制台中点击this.get('preload eddata')时,它会设法将我的输入提取到表单中。但是,问题是我无法将用户输入发布到Rails DB中 代码为: 商场 模型 控制器 在rails

我正试图用Emberjs和ember数据将一条新记录发布到Rails数据库中;但是,我得到以下错误:

TypeError{}“无法调用未定义的方法'hasOwnProperty'”

我一直遵循的例子,并试图建立我自己的应用程序使用相同的概念,根据例子。更不用说,我已经使用了调试器;在我的控制器中,当我在控制台中点击this.get('preload eddata')时,它会设法将我的输入提取到表单中。但是,问题是我无法将用户输入发布到Rails DB中

代码为:

商场 模型 控制器 在rails控制器下:-

def create
    @category = CompanyCategory.new(params[:id])
    respond_to do |format|
      if @category.save
        format.json { render json: @category, status: :created, location: @category }
      else
        format.json { render json: @category.errors, status: :unprocessable_entity}
      end
    end
  end
路由器 调用App.CompanyCategory.find()时的JSON输出;是:


我能知道我做错了什么吗?提前谢谢

在这里,让控制器设置自己的模型被认为是不好的做法。相反,路由器的工作是向控制器提供模型。 所以根据余烬的做事方式,你应该做:

App.CompanyCategoriesNewRoute = Em.Route.extend({
   model: function() {
    return this.get('store').createRecord(App.CompanyCategory, {});
   },

  setupController: function(controller, model) {
    controller.set('content', model);
  }
});

App.CompanyCategoriesNewController = Em.ObjectController.extend({


    startEditing: function() {
       this.set('transaction', this.get('store').transaction());
       this.get('transaction').add(this.get('model'));
   },

   save: function() {
     this.get('transaction').commit();
  }

}))

你还在寻找这个问题的答案吗?还是继续前进?我肯定还在寻找它=)你为什么要这样做。transaction=null?@Hrishi,我考虑过在执行提交后将其设置为null,以便在调用事件保存函数时,先前保存的数据不会被提交两次。如果您还可以向我们展示把手,那么againIt会有所帮助。
App.CompanyCategoriesNewController = Em.ObjectController.extend({

    startEditing: function() {
        this.transaction = this.get('store').transaction();
        this.set('model', this.transaction.createRecord(App.CompanyCategory, {}));
    },

    save: function() {
        this.transaction.commit();
        this.transaction = null;
    }
});
def create
    @category = CompanyCategory.new(params[:id])
    respond_to do |format|
      if @category.save
        format.json { render json: @category, status: :created, location: @category }
      else
        format.json { render json: @category.errors, status: :unprocessable_entity}
      end
    end
  end
App.CompanyCategoriesNewRoute = Em.Route.extend({
   model: function() {
       return null;
   },

   setupController: function(controller) {
       this._super.apply(this,arguments);
       controller.startEditing();
   }
});
{
   "company_categories":[
           {"id":1,"category":"Financial Services"},
           {"id":2,"category":"Trade Services"}
   ]
}
App.CompanyCategoriesNewRoute = Em.Route.extend({
   model: function() {
    return this.get('store').createRecord(App.CompanyCategory, {});
   },

  setupController: function(controller, model) {
    controller.set('content', model);
  }
});

App.CompanyCategoriesNewController = Em.ObjectController.extend({


    startEditing: function() {
       this.set('transaction', this.get('store').transaction());
       this.get('transaction').add(this.get('model'));
   },

   save: function() {
     this.get('transaction').commit();
  }