我有一个我正在研究的示例应用程序,它使用Ruby on Rails作为服务器后端,使用Backbone.Marionette作为客户端。主要功能是“订购小部件”的表单。我正在使用backbone-forms来创建表单。抛弃事物的奇怪之处在于,一旦我提交表单并将模型保存到Rails后端,浏览器就会自动重定向到根URL,并将所有表格参数作为URL参数(例如http://localhost:3000/?quantity=4&color=red&needed_by=2015-06-15T04%3A00%3A00.000Z&kind=Widget+Pro
)。此重定向提示Rails在控制器上获取#index
方法(这是空白表单,因为这是应用程序的唯一功能)。
对于我的生活,我找不到造成这种情况的原因。我不知道它的Backbone,Marionette还是骨干形式。我不会阻止它,或者至少要理解它,让它做我想做的事情。
如果有帮助,这里是生成表单的代码,等待提交,提交Backbone.Model,然后将其保存到Rails后端:
@WidgetApp.module "Widget.Create", (Create, App, Backbone, Marionette, $, _) ->
# VIEW
class Create.Widget extends Marionette.ItemView
template: "create_widget"
# Controller
class Create.Controller extends Marionette.Controller
initialize: ->
widget = App.request "new:widget:entity"
# newView = new Create.Widget
# App.mainRegion.show newView
form = new Backbone.Form(
template: _.template($('#formTemplate').html())
model: widget
)
App.mainRegion.show(form.render())
# Run validation before submitting
form.on 'submit', (event) ->
errs = form.commit({ validate: true })
if errs
console.log errs
event.preventDefault()
widget.save()
答案 0 :(得分:2)
尝试将语句event.preventDefault()
作为表单submit的事件监听器中的第一个语句。我遇到了同样的问题,在事件监听器的第一行添加相同的语句解决了我的问题。