Javascript Rails资产在开发中加载两次;制造奇怪的行为

Javascript Rails资产在开发中加载两次;制造奇怪的行为,javascript,jquery,ruby-on-rails,ruby,caching,Javascript,Jquery,Ruby On Rails,Ruby,Caching,我正在进行一项研究,发现了一些奇怪的行为,我认为这是由于rails资产在开发过程中多次加载造成的 我在Chrome上工作,并标记了Developer Tools->Network->“disable cache”复选框,这使得js和css资产只加载一次,并使一切都按预期/期望工作 但是,当我取消选中“禁用缓存”框时,资产开始加载多次,typeahead中断,抛出:未捕获的TypeError:$(…)。typeahead不是一个函数 复制步骤: git clone https://github.c

我正在进行一项研究,发现了一些奇怪的行为,我认为这是由于rails资产在开发过程中多次加载造成的

我在Chrome上工作,并标记了
Developer Tools->Network->“disable cache”
复选框,这使得js和css资产只加载一次,并使一切都按预期/期望工作

但是,当我取消选中
“禁用缓存”
框时,资产开始加载多次,typeahead中断,抛出:
未捕获的TypeError:$(…)。typeahead不是一个函数

复制步骤:

git clone https://github.com/duhaime/chalkboard.git
cd chalkboard
rake sunspot:solr:start
rake db:drop db:create db:migrate db:seed
rake sunspot:solr:reindex
rails s
# visit localhost:3000 and enable/disable cache (then refresh) in Chrome

我相信可以通过禁用Rails中的缓存(而不是浏览器客户端)来解决这个错误,但是我想问一下,是否有一种不禁用缓存的正确方法来解决这个问题。关于这个问题,我已经阅读了很多其他的SO线程,但还没有找到一个可行的解决方案。如果其他人能就这个问题提供任何建议,我将不胜感激

typeahead失败的原因是我通过
app/assets/javascripts/application.js
文件导入它:

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require twitter/typeahead
//= require_tree .
我用的是
。更糟糕的是,typeahead include调用正在导入
typeahead.bundle.js
0.11.1版,我安装了gem
twitter引导rails
0.10.5版


我删除了所有的
,从我的
/assets
目录中删除了
typeahead.bundle.js
文件,并且
$(…)。typeahead不是一个函数
错误已经消失。我把这个问题留在这里,以防对别人有帮助

我唯一一次使用rails javascript双重加载是因为
application.js
的编译版(但没有摘要标记)位于
public/assets
中。值得删除
public/assets/application.js
,如果它存在,它可能会解决您的问题。谢谢@robomc;我没有
public/assets
目录:/