我有一个带有 Backbone.js 前端的 rails 应用程序。在我的主干模型/集合定义中,我有以下模型(在 project.js.coffee.erb 中)
#############################
## MODEL
#############################
class window.Project extends Backbone.Model
urlRoot: '/projects'
#############################
## COLLECTION
#############################
class window.Projects extends Backbone.Collection
model: Project
url: '/projects'
# initialize new collection
window.projects = new Projects
projects.reset(<%= Project.all.to_json %>)
最后一行是 ERB 在 JSON 中加载所有项目的地方。
当我加载我的应用程序时,这种引导会产生一个包含旧数据的集合。我知道它已经过时了,因为我已经做到了:
- 删除我的开发数据库(sqlite3)
- 更改我的 database.yml 以重命名我的开发数据库名称
- 重新运行
rake db:migrate
以创建一个全新的 .sqlite3 数据库文件
我可以运行sqlite3
并看到项目表不包含任何行,但是,即使在重新启动服务器之后,project.js
它也会被编译为包含一个充满现在不存在的数据的集合。
Rails 在我运行时正确启动到开发模式rails s
:
=> Booting WEBrick
=> Rails 3.2.5 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-07-02 21:24:08] INFO WEBrick 1.3.1
[2012-07-02 21:24:08] INFO ruby 1.9.3 (2012-04-20) [x86_64-darwin11.4.0]
[2012-07-02 21:24:08] INFO WEBrick::HTTPServer#start: pid=11607 port=3000
如果我创建新项目,它们甚至会保存到数据库中。它们也可以很好地添加到 Backbone 集合中。但是,同样,如果我重新加载页面甚至重新启动服务器,该集合将再次填充旧数据。
有人可以帮我弄清楚我在这里做错了什么吗?