1

我正在将 Rails 3.0.9 应用程序移植到 Rails 3.1.rc5。Myapplication.js与 Rails 3.1 本身生成的完全相同:

// This is a manifest file ...
//
//= require jquery
//= require jquery_ujs
//= require_tree .

但是当我运行我的应用程序并查看application.jsFirebug 或 Chrome 开发人员工具时,我看到的只是:

// This is a manifest file ...
//

指令消失了,所以看起来该文件被 Sprockets 处理,但指令并没有被jqueryet al 的内容替换。服务器控制台或日志中没有出现错误。

奇怪的是,当我运行一个blog应用程序(你知道,规范的教程应用程序)时,它运行良好(也就是说,当我application.js在 Firebug 中检查时,它包含 jQuery 的文本。)这似乎表明我的应用程序中的某些东西以某种方式干扰带链轮。有没有人听说过这样的问题(并希望有解决方法)?

这是我的设置:

$ 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

我不知道可能出了什么问题。我已经三次检查了我的 Gemfile;我已经跑了又跑bundle installbundle update;我试过 rc3、rc4 和现在的 rc5;我正在运行 Ruby 1.9.2p290。有任何想法吗?

4

1 回答 1

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 查看包含 gem 的资产路径,因此您将获得与 Sprockets 指令相同的文件。但是您不会得到连接或任何其他 Sprockets 预处理。

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

于 2011-07-27T01:42:54.880 回答