11

直到昨天,jQuery 在我的 Rails 应用程序中加载得很好。我正在尝试安装调试器/ruby-debug gem。正如您可能知道的那样,Rails 3 中的调试器 gem 存在问题,并且我未能成功安装依赖项,因此我从 Gemfile 中删除了 gem。从那以后加载我的网站时,jQuery 没有加载。这些是我在控制台中看到的消息:

assets/jquery_ujs.js?body=1:377Uncaught ReferenceError: jQuery is not defined
bootstrap-transition.js:24Uncaught TypeError: undefined is not a function
bootstrap.js:3Uncaught ReferenceError: jQuery is not defined
welcome:210Uncaught ReferenceError: $ is not defined

这是我的 application.js 文件:

//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require_tree .

如果我在 layouts/application.html.erb 中显式加载 jQuery,就像这样,它可以工作:

<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" %>
<%= javascript_include_tag "application" %>

关于我可以做些什么来解决这个问题并再次加载 jQuery 有什么想法吗?查看 .rvm/gems/ruby-1.9.3-p125/gems/jquery-rails-2.0.2/vendor/assets/javascripts 我可以看到 jquery.js 和 jquery.min.js 仍然存在。

4

3 回答 3

11

谢谢@Djj。重新排序我的 application.js 树似乎已经解决了这个问题。这是我修改后的树:

//= require jquery_ujs
//= require jquery
//= require twitter/bootstrap
//= require jquery.placeholder
//= require_tree .
于 2012-05-15T14:11:30.717 回答
4

在我的情况下,问题是由于异步加载 javascript 文件。

<%= javascript_include_tag "application", :async => true %>

切换回

<%= javascript_include_tag "application" %>

解决了这个问题。

于 2014-01-14T16:05:35.993 回答
0

经过很长时间,这解决了我的错误问题。

确保 Jquery 只加载一次。

包含gem 'jquery-rails' 在 Gemfile 中并执行$ bundle install

确保将这些包含在app/assets/javascripts/application.js文件中。

//= require jquery
//= require jquery_ujs

错误时的语法 // require jquery会导致不加载 jquery。

如果所有内容都包含正确,则您的 html 文件的页面源必须显示包含的所有源文件。

对我来说,我遇到了一个问题,因为除了在 app/assets/javascript 下的 application.js 文件中需要它之外,我还在 app/views/layouts 下的 application.html.erb 中明确加载了来自 google 的 jquery 插件源。这导致 jquery 被再次定义,并且很少会出现placeholder()未定义、oApi未定义等错误null

于 2013-07-08T12:33:57.723 回答