【问题标题】:rails: backbone-on-rails gem-轨道:骨干轨道宝石-
【发布时间】:2012-04-08 01:29:48
【问题描述】:

尝试按照 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

有什么办法可以解决这个问题吗?

javascripts/raffler/application.js

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

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

routers/entries.js

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

  index: ->
    alert "home page"

更新

在我运行生成器//= require_tree . 之后,紧接在 require jquery_ujs 之后,我发现(我认为)是导致一些问题的原因。但是,我现在已将其移至底部,但仍然出现此错误

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

new Raffler.Routers.Entries();

应用程序.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 .

【问题讨论】:

  • 您是否在任何地方都包括underscore.jsbackbone.js(按此顺序)?
  • 是的,我已经用 application.js 更新了 OP。现在我移动了 require_tree ,错误发生了变化。到底部,但它仍然无法正常工作。
  • 您的application.js 包含在哪里? HTML 的顶部还是底部?
  • 顶,我只是使用 Rails 3.1 默认的

标签: ruby-on-rails backbone.js


【解决方案1】:

我遇到了同样的问题。对我来说,解决方案是删除该行

//= require_tree .

来自application.js 文件,因为该行位于下划线和主干js 行之前。

【讨论】:

    【解决方案2】:

    我找到了遇到同样问题的其他人,然后让它工作。我将他的代码(与我的完全一样)复制到我的文件中,现在我的工作了。不知道为什么

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-15
      • 1970-01-01
      • 2010-11-25
      相关资源
      最近更新 更多