我将Rails 3.0.9应用移植到Rails 3.1.rc5。我的application.js
与Rails 3.1本身生成的// This is a manifest file ...
//
//= require jquery
//= require jquery_ujs
//= require_tree .
完全相同:
application.js
但是当我运行我的应用并查看Firebug或Chrome开发者工具中的// This is a manifest file ...
//
时,我看到的只有:
jquery
指令消失了,所以似乎文件已经由Sprockets处理,但指令没有被blog
等的内容所取代。服务器控制台或日志中没有出现错误。
奇怪的是,当我运行一个application.js
应用程序(你知道,canonical tutorial app)它运行正常(也就是说,当我在Firebug中检查$ gem list jquery
*** LOCAL GEMS ***
jquery-rails (1.0.12)
$ ruby -v
ruby 1.9.2p290 (2011-07-09) [i386-mingw32]
$ rails -v
Rails 3.1.0.rc5
时,它包含了jQuery的文本。)这似乎表明我的应用程序中的某些东西在某种程度上干扰了Sprockets。有没有人听说过这样的问题(希望是一种解决方法)?
这是我的设置:
bundle install
我对可能出错的东西感到茫然。我已经三次检查了我的Gemfile;我已经运行并重新运行bundle update
和{{1}};我已经尝试过rc3,rc4和现在的rc5;我正在运行Ruby 1.9.2p290。有什么想法吗?
答案 0 :(得分:0)
一种解决方法:包含带有old-skool标记的JavaScript文件。例如,在我的(Haml)布局中:
= javascript_include_tag '/assets/jquery.js'
= javascript_include_tag '/assets/jquery_ujs.js'
= javascript_tag 'jQuery.noConflict();'
/assets/
前缀告诉Rails 3.1.x查看资产路径,其中包含gems,因此您将获得与Sprockets指令相同的文件。但是你不会得到连接或任何其他Sprockets预处理。
仍在寻找更好的解决方案。