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
と、projectsテーブルに行が含まれていないことがわかりますが、サーバーを再起動した後でも、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コレクションにも問題なく追加されます。しかし、繰り返しになりますが、ページをリロードしたり、サーバーを再起動したりすると、コレクションに古いデータが再び入力されます。
誰かが私がここで間違っていることを理解するのを手伝ってもらえますか?