这是一个关于Backbone.JS和ActiveRecord的Noob问题。 我将不胜感激关于如何调试这个指针。我试图使用Backbone.Js代码来创建一个“培训师”对象,其中有一个单一的属性,“名称”(字符串)。 该应用程序的前端是Ruby on Rails。 Trainer表有数据迁移。Backbone.js和ActiveRecord
在教练员控制器:现在
def create
document = Trainer.create! params[:trainer]
render :json => document
end
,在app /资产/ Java脚本/骨干网/视图/培训/ new_view.js:
Gym.Views.Trainers.NewView = Backbone.View.extend({
el : 'div.trainer_form',
template: JST['backbone/templates/trainers/new_template'],
model : new window.Gym.Models.Trainer({}),
initialize: function() {
this.document = this.options.user;
Backbone.Validation.bind(this, {
invalid: function(view, attr, error) {
$("form#new-trainer .errors ul").append("<li>" + error + "</li>")
}
});
this.render();
},
render : function() {
$(this.el).html(this.template({trainer:this.model.toJSON()}));
return this
},
events : {
"click input#submit_button" : 'create_trainer'
},
create_trainer : function(event) {
event.preventDefault()
params = $("form#new-trainer").formParams()
params['user_id'] = Gym.currentUser.userId
this.model.save(params, {success : function(model, response) {
Gym.trainers.add(model)
Objects.views.selectTrainer.render()
Gym.current_trainer = model
$("select#trainer_selector").val(Gym.current_trainer.get('id'))
Objects.views.new_trainer.model = new Gym.Models.Trainer()
Objects.views.new_trainer.render()
}
});
现在,我可以在Rails的日志中看到那我越来越控制器:
Started POST "/trainers" ...
Processing by TrainersController#create as JSON
Parameters: {"name"=>"Lori Stevens", "user_id"=>1, "trainer"=>{}}
然而,当它到达的SQL,我看到:
[1m^[[36mSQL (0.4ms)^[[0m ^[[1mINSERT INTO `trainers` (`created_at`, `name`, `updated_at`, `user_id`) VALUES ('2012-11-07 20:33:09', NULL, '2012-11-07 20:33:09', NULL)^[[0m
即使在JSON中设置了参数“name”,参数'name'(来自模板,并且是Trainer对象的属性)也没有进入数据库。
我很欣赏一个关于如何调试的指针 - 显然我不明白Backbone.js和ActiveRecord是如何连接的。
谢谢@Meier。我明白你的意思。在我提出的代码中,params [:trainer]通常设置在哪里?它会在create_trainer的开头:function(event)? – sploiber