2012-04-08 108 views
3

试图按照Ryan Bates Backbone.js教程来构建一个抽奖应用程序,但我已经遇到了第一个代码问题。在application.js中的初始化函数,他初始化它应该触发警报“主页” Raffler路线的新实例,但我发现在Firebug下面的错误,我不明白rails:backbone-on-rails gem-

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 

任何想法如何解决这个问题?

的JavaScript/raffler/application.js中

window.Raffler = 
    Models: {} 
    Collections: {} 
    Views: {} 
    Routers: {} 
    init: -> 
    new Raffler.Routers.Entries() 
    Backbone.history.start() 

$(document).ready -> 
    Raffler.init() 

路由器/ entries.js

class Raffler.Routers.Entries extends Backbone.Router 
    routes: 
    '': 'index' 

    index: -> 
    alert "home page" 

更新

后,我跑了发电机//= require_tree .为后,立即要求jquery_ujs其中,我发现(我认为)是什么造成了一些问题。不过,现在我已经把它移到底部,我仍然收到此错误

Raffler.Routers.Entries is not a constructor 
[Break On This Error] 

new Raffler.Routers.Entries(); 

的application.js

//= require jquery 
    //= require jquery_ujs 
    //= require underscore 
    //= require backbone 
    // 
    //= require .//raffler 
    // 
    //= require_tree ../templates/ 
    //= require_tree .//models 
    //= require_tree .//collections 
    //= require_tree .//views 
    //= require_tree .//routers 
    //= require_tree . 
+0

您是否在任何地方包含'underscore.js'和'backbone.js'(按此顺序)? – 2012-04-08 02:05:04

+0

是的,我已经用application.js更新了OP。现在我改变了require_tree的错误。到底部,但它仍然无法正常工作。 – Leahcim 2012-04-08 02:24:25

+0

你在哪里包含你的'application.js'? HTML的顶部或底部? – 2012-04-08 03:05:15

回答

0

我发现别人谁有同样的问题,然后得到它的工作。我将他的代码(与我的代码完全一样)复制到我的文件中,现在我的工作。不知道为什么

window.Raffler = 
    Models: {} 
    Collections: {} 
    Views: {} 
    Routers: {} 
    init: -> 
    new Raffler.Routers.Entries() 
    Backbone.history.start() 

$(document).ready -> 
    Raffler.init() 
7

我有同样的问题。对我来说,解决方法是删除行

//= require_tree .

application.js文件

,因为这条线是为下划线和backbonejs行之前。