我正在尝试等待:真正的选项来处理 collection.create(model) 并且没有任何运气。
要在添加时呈现的视图
window.ObjectsView = GreyboxView.extend
initialize: function() {
_.bindAll(this, 'render');
this.collection.bind('add', this.render);
return this.collection.bind('reset', this.render);
},
render: function() {
json = { obj removed }
this.template = _.template(JST['irboards/index'](json));
this.$el.html(this.template());
this.renderObjects();
return this;
}
}
关于模型保存(新)
window.FormView = GreyboxView.extend({
// un-needed code omitted
saveModel: function() {
this.model.set { all my attributes }
this.collection.create(this.model, {
wait: true
});
}
}
在导轨控制器中:
def create
@model = Model.new(params[:model].merge({:account_id => current_user.account.id, :action_user_id => current_user.id}))
if @model.save
flash[:success] = AppSystem::Notifications.created('Model')
respond_with @model.to_json
else
flash[:error] = @model.errors[:base].blank? ? AppSystem::Notifications::FORM_ERROR : @model.errors[:base]
render :action => :new
end
end
基本上 {wait: true} 什么都不做......要么 js 模型没有被添加到集合中,b/c 它正在保存到数据库中,要么
this.collection.bind('add', this.render)
没有被触发或者 Rails 没有返回成功......我真的不知道。
任何人都可以帮忙吗?
先感谢您
显然我还不能回答我自己的问题,但我不想忘记这个 b/c 我知道它会帮助别人。所以:
嗯...经过长时间的搜索,终于发布了这个问题......我发现了处理这个问题的方法。我找到了这篇文章/博客
http://italktoomuch.com/2012/05/setting-up-backbonejs-with-ruby-on-rails/
基本上我的 create :action 需要是
def create
respond_with = Model.create(params0
end
js是:
this.collection.create(attributes, {
wait: false,
success: function() {
return _this.collection.trigger('reset');
},
error: function() {
return alert('wrong!');
}
})
那么我是否可以相信等待什么也没做?还是我只是用错了?我不知道,但这是有效的,我很高兴。需要做更多的重构,但这是一个很好的起点
希望这对其他人也有帮助