什么可以导致Rails 3.1“=需要jquery”停止工作?

时间:2011-07-26 20:58:48

标签: javascript jquery ruby-on-rails ruby-on-rails-3.1 sprockets

我将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。有什么想法吗?

1 个答案:

答案 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预处理。

仍在寻找更好的解决方案。