直到昨天,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仍在那里。
答案 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
。