在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
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(); });
- 带有backbone-rails的Rails:EJS文件中的资产助手(image_path)
- 如何从Backbone应用程序POST到PUT和DELETE到不同子域的Rails应用程序?
- 无法访问主干模型属性
- Marionette CompositeView为Collection中的每个Model而不是ItemView(Marionette Rails)渲染自己
- 未捕获的TypeError:undefined不是函数rails3 / backbone / js
- 使用rspec和capybara测试rails + backbone应用程序
- Backbone.js前端有RESTful Rails后端吗?
- Backbone.js和Rails – 如何处理Backbone模型中的参数?
- 在javascript中转义标记