从模板中的视图渲染表单

时间:2012-11-23 15:08:35

标签: ruby-on-rails-3 backbone.js coffeescript backbone-forms

我正在评估backbone.js,骨干表格和Rails,我有一些问题......

我有一个视图,我在其中创建一个新模型和一个表单,我想用其他html元素显示这个表单,所以我使用的是模板。

expedients_new.js.coffee
------------------------

class Globalbackbone.Views.ExpedientsNew extends Backbone.View

template: JST['expedients/new']

render: ->

@form = new Backbone.Form({
    model: @model
}).render();

console.log(@model.procedencia) 
console.log(@form) 
$(@el).html(@template(expedient: @model, form: @form ))
this

此视图使用模板,在此模板中,我想在那里渲染表单,但我不知道该怎么做...

new.jst.eco
-----------

<h1>BackBones with GlobalWeb</h1>

<h2>Adding New Expedient</h2>

<%=@expedient.date%>
<hr>
<%=@form.el%>
<hr>
<%=@form%>

提前致谢,

问候

修改

我希望表单的当前浏览器输出是:     [object HTMLFormElement]

1 个答案:

答案 0 :(得分:0)

usage instructions表示@form将成为Backbone视图:

var form = new Backbone.Form({
    model: user
}).render();

这意味着@form.el将是您需要插入DOM的DOM元素:

$('body').append(form.el);

如果您查看the source,您会看到Backbone.FormBackbone.View子类:

var Form = (function() {
  return Backbone.View.extend({
    //...

您的代码正在尝试将@form视为包含HTML的字符串:

<%=@form%>

所以你最终得到了DOM元素的标准字符串化版本:[object HTMLFormElement]

如果您在视图中有类似的内容,我认为您会有更好的运气:

@$el.append(@template(expedient: @model))
@$el.append(@form.el)

并在您的模板中:

<h1>BackBones with GlobalWeb</h1>

<h2>Adding New Expedient</h2>

<%=@expedient.date%>
<hr>

然后,您的表单应显示在<hr>

之后