Tag: backbone.js

在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) -> […]

HTML5缓存和授权问题

将HTML5缓存添加到rails on backbone中编写的单页应用程序后,我遇到了问题。 浏览器(chrome)没有重新加载html,这会以两种方式导致问题: 1)骨干的骨架html有时会发生变化 – 至少让骨干知道用户已登录。但是如果没有加载html,应用程序就不知道(例如刷新后)。 我可以在页面加载时查询服务器,但这是我跳过以避免的另一个请求。 此外,这将强制将所有permisions逻辑移动到客户端 – 因此要么从服务器复制cancan设置或将其嵌入到html中 – 我们遇到上述问题。 2)Rails的csrf标记在html中,它们也不会改变 – 导致任何ajaxpost无效。 对于这个,我不知道该怎么做。 从我读到的csrf令牌是为会话生成的,所以也许在登录/注销时我可以用js更新它。 然而,在哪里得到它,它会工作吗?

rails:rails-on-rails gem-

尝试跟随Ryan Bates Backbone.js教程构建一个抽奖应用程序,但我已经遇到了第一段代码的问题。 在application.js的init函数中,他初始化了Raffler路由的新实例,它应该触发警报“主页”,但是我在Firebug中遇到以下错误,我不明白 entries.js:5Uncaught ReferenceError: Raffler is not defined entry.js:15Uncaught ReferenceError: Backbone is not defined entries.js:23Uncaught ReferenceError: Backbone is not defined index.js:17Uncaught ReferenceError: Backbone is not defined application.js:7Uncaught SyntaxError: Invalid regular expression: missing / raffler.js:9Uncaught TypeError: undefined is not a function 我有什么想法可以解决这个问题? Java脚本/ raffler / application.js中 window.Raffler = Models: {} Collections: {} Views: {} […]

Backbone.js路由器实例在某种程度上是无效的

我有以下代码块。 它完美地运作。 $(function() { window.router = new Lunchhub.Routers.RestaurantLocationsRouter({restaurantLocations: }); var Foo = Backbone.Router.extend({routes: {“foo”:”bar”}}); r = new Foo(); Backbone.history.start(); }); 但是,这不起作用: $(function() { window.router = new Lunchhub.Routers.RestaurantLocationsRouter({restaurantLocations: }); // All I did was delete the two lines that used to be here Backbone.history.start(); }); 后一个片段给了我这个错误: Uncaught TypeError: Cannot call method ‘start’ of undefined 所以我的Foo路由器实例触发了Backbone.history的正确初始化,就像你期望路由器实例那样,但是我的Lunchhub.Routers.RestaurantLocationsRouter实例没有。 这是我在CoffeeScript中的路由器定义(由backbone-rails […]

是否有框架允许我只定义一次模型?

我刚刚完成了几个模型的创建,并且必须在1)Rails ActiveRecord 2)Rails数据库迁移和3)Backbone.js模型中分别编写所有属性。 我感觉不太干涩。 我假设干扰这个问题的第一步是切换到node.js,我可以在后端和前端使用CoffeeScript(理想情况下重用相同的Backbone.js模型),但是数据库模式呢? 我意识到我可以创建一个从模型属性生成SQL的框架,但在我开始这项努力之前,我想知道这样的事情是否已经存在或正在开发中。 如果这个框架可以统一视图和控制器以便我没有应用程序/视图,应用程序/控制器,app / assets / javascripts / views,app / assets / javascripts / routers等所有定义相似的内容,那也是很棒的不同地方的事情。

Marionette CompositeView为Collection中的每个Model而不是ItemView(Marionette Rails)渲染自己

基本上,我正在尝试将CompositeView渲染为带有表头的简单四列列表,其中集合中的每个模型都呈现为a并附加到。 我跟着Derick的一个例子非常接近,只有一点变化,但不幸的是有一些非常奇怪的结果。 视图不是呈现每个itemView,而是引用自身并为集合中的每个项重新呈现,从而生成新的表和表头。 在此之前,它正在渲染复合视图。 我有一个itemView,其模板是一组项目,以及一个引用它的复合视图,它是一个表 CompositeView: class App.module(‘Views.Parts’).Index extends Backbone.Marionette.CompositeView template: ‘parts/index’ itemView: App.Views.Parts.Part tagName: ‘table’ itemViewContainer: ‘tbody’ appendHtml: (collectionView, itemView, index)-> collectionView.$el.append(itemView.el) ItemView: class App.module(‘Views.Parts’).Part extends Backbone.App.ItemView tagName: ‘tr’ template: ‘parts/part’ events: “click .destroy”: “destroy” destroy: (e) -> e.preventDefault() @model.destroy() onRender: -> @stickIt() 控制器 class App.Controllers.Parts constructor: -> @parts = new App.Collections.Parts @parts.reset(App.parts) App.parts […]

使用rspec和capybara测试rails + backbone应用程序

我正在使用列出的gem为我的应用程序编写测试。 我找不到如何设置Capybara与骨干(ajax in all)一起工作 示例测试: require ‘spec_helper’ describe “Main” do describe “GET /” do it “displays articles” do Article.create!(title:’title’,body:’body text’) visit ‘/’ page.should have_content(‘body text’) end end end 和测试的输出: Failures: 1) Main GET / displays articles Failure/Error: page.should have_content(‘body text’) expected there to be text “body text” in “Loading…” # ./spec/features/main_spec.rb:8:in `block (3 levels) in […]

无法访问主干模型属性

我有一个董事会模型,其category_id代表类别父类,即一个类别有很多董事会。 我有一个以下的ruby模型 应用程序/模型/ board.rb class Board < ActiveRecord::Base attr_accessible :description, :name, :open, :members, :category_id belongs_to :category end 只有我想通过在骨干模板标签标签中使用category_id(可访问)来获取类别对象。 如果我访问类别对象,我在label标签中变为null。 以下是很多代码,如果有更多需要我会发布。 骨干模型: 应用程序/资产/ Java脚本/模型/ board.js Kanban.Models.Board = Backbone.RelationalModel.extend({ urlRoot: “/api/boards”, relations: [{ type: Backbone.HasMany, key: “lists”, relatedModel: “Kanban.Models.List”, collectionType: “Kanban.Collections.Lists”, reverseRelation: { key: “board” } },{ type: Backbone.HasMany, key: “users”, relatedModel: “Kanban.Models.User”, collectionType: “Kanban.Collections.Users” }] }); […]

如何使用Backbone.js和Rails更新一组记录?

我在Rails&Backbone.js应用程序中有通知 // MODEL NotificationModel = App.BB.Model.extend({ defaults : {} }); // COLLECTION NotificationCollection = App.BB.Collection.extend({ model: NotificationModel, url: ‘/notifications’, initialize : function() { var me = this; me.fetch(); } }); 该模型具有以下字段(id,read),其中read为true或false。 我想要做的是一旦用户查看通知,在服务器上将所有标记为READ = true。 使用Backbone.js的正确方法是什么? 谢谢

如何从Backbone应用程序POST到PUT和DELETE到不同子域的Rails应用程序?

Whick是从Backbone应用程序发送,PUT和DELETE到不同子域上的Rails应用程序的最佳方式吗? 我试图从Rails应用程序中使用Backbone获取一些数据并且它可以工作。 我试图使用Backbone to Rails应用程序保存新内容。 我有PUT的真正问题(更新数据库中创建的模型)。 我不知道为什么,但是当我在我的骨干应用程序中执行类似:book.save() 这本书是一个已经存在于数据库中的模型,而不是向Rails APP发送PUT请求,而是发送OPTIONS请愿书,而不是数据。 理想情况下,我想从Backbone应用程序向Rails应用程序发送PUT请求,因此我可以在我的Rails应用程序中执行以下操作: Book.update_attributes params [:book] Rails应用程序和Backbone应用程序位于同一顶级域的不同子域上。