在backbone.js + rails中渲染视图

我试图在我的根页面上呈现视图“new_view.js.coffee”(创建用户的表单)。 我正在使用rails-backbone gem,到目前为止我有这个:

应用程序/视图/家/ index.html.erb

Loading...
$(function() { window.newView = new Example.Views.Users.NewView({model: users}); newView.render(); Backbone.history.start(); });

它基本上是这个的副本(来自rails-backbone README.md):

应用程序/视图/职位/ index.html.erb

 
$(function() { // Blog is the app name window.router = new Example.Routers.PostsRouter({posts: }); Backbone.history.start(); });

我的新观点是这样的:

资产/ Java脚本/骨干网/视图/用户/ new_view.js.coffee

 Example.Views.Users ||= {} class Example.Views.Users.NewView extends Backbone.View template: JST["backbone/templates/users/new"] events: "submit #new-user": "save" constructor: (options) -> super(options) @model = new @collection.model() @model.bind("change:errors", () => this.render() ) save: (e) -> e.preventDefault() e.stopPropagation() @model.unset("errors") @collection.create(@model.toJSON(), success: (user) => @model = user window.location.hash = "/#{@model.id}" error: (user, jqXHR) => @model.set({errors: $.parseJSON(jqXHR.responseText)}) ) render: -> $(@el).html(@template(@model.toJSON() )) this.$("form").backboneLink(@model) return this 

这是我的用户路由器:

users_router.js.coffee

 class Example.Routers.UsersRouter extends Backbone.Router initialize: (options) -> @users = new Example.Collections.UsersCollection() @users.reset options.users routes: "new" : "newUser" "index" : "index" ":id/edit" : "edit" ":id" : "show" ".*" : "index" newUser: -> @view = new Example.Views.Users.NewView(collection: @users) $("#users").html(@view.render().el) index: -> @view = new Example.Views.Users.IndexView(users: @users) $("#users").html(@view.render().el) show: (id) -> user = @users.get(id) @view = new Example.Views.Users.ShowView(model: user) $("#users").html(@view.render().el) edit: (id) -> user = @users.get(id) @view = new Example.Views.Users.EditView(model: user) $("#users").html(@view.render().el) 

“新”模板:

资产/ Java脚本/骨干网/模板/用户/ new.jst.ejs

 

New user

<input type="text" name="name" id="name" value="" >
<input type="text" name="email" id="email" value="" >
Back

当我去localhost:3000时,我看到的只是“正在加载…”(我为了查看应用程序是否启动而放入)。 再次,我将如何在#container div上面渲染new_view?

您尚未将渲染的内容附加到正文:

  $(function() { window.newView = new Example.Views.Users.NewView({model: users}); $('body').html(newView.render().$el) // newView.render(); Backbone.history.start(); });