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