为什么jQuery没有加载到我的Rails 3.2.3应用程序中?

时间:2012-05-11 14:29:21

标签: jquery ruby-on-rails ruby-on-rails-3

直到昨天,jQuery在我的Rails应用程序中加载得很好。我正在玩安装debugger / 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仍在那里。

3 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:4)

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

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

切换回

<%= javascript_include_tag "application" %>

解决了这个问题。

答案 2 :(得分:0)

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

确保Jquery只加载一次。

在Gemfile中加入gem 'jquery-rails'并执行$ bundle install

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

//= require jquery
//= require jquery_ujs

// require jquery之类错误的语法导致无法加载jquery。

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

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