gpt4 book ai didi

ruby-on-rails-3.1 - 未捕获的类型错误 : Cannot call method 'extend' of undefined

转载 作者:行者123 更新时间:2023-12-04 21:53:55 24 4
gpt4 key购买 nike

我正在尝试使用 CoffeeScript 类来扩展 Backbone.Model。我构建了一个全新的 rails 3.1 应用程序,创建了一个具有 3 个属性的“Stone”脚手架,并将 Todos.coffee 示例的一个片段修补到了 Stones.js.coffee 中。我在 app/assets/javascripts 文件夹中有backbone.js 和underscore.js。当我在 Chrome Java 控制台下运行它时,我在控制台日志中收到上面的消息。有任何想法吗?

实际代码如下:

$ -> 

class Todo extends Backbone.Model
# Default attributes for the todo.
defaults:
content: "empty todo..."
done: false

# Ensure that each todo created has `content`.
initialize: ->
if !@get("content")
@set({ "content": @defaults.content })

# Toggle the `done` state of this todo item.
toggle: ->
@save({ done: !@get("done") })

# Remove this Todo from *localStorage* and delete its view.
clear: ->
@destroy()
@view.remove()

使用的 application.js 是由 Rails 3.1 生成的。我从 Todos github 存储库中复制了 Backbone.js 和 underscore.js, https://github.com/JasonGiedymin/backbone-todojs-coffeescript

最佳答案

问题很简单,underscore.js正在加载 backbone.js 之后,当它是必须先加载的先决条件时。 (注意在 Backbone.js source 中它会立即设置 var _ = root._,所以即使稍后声明了一个全局的 _,它在 Backbone 的作用域中也是不可见的。)默认情况下,Sprockets 会按字母顺序加载 Assets 目录中的 JS 文件。

您可以使用链轮修复此问题:Put

//= require underscore.js


//= require_tree .

以确保它首先加载。

关于ruby-on-rails-3.1 - 未捕获的类型错误 : Cannot call method 'extend' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8762169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com