我已经开发一个 rails 应用程序一个星期了。我使用 jquery-rails gem 来使用 jQuery,一切正常。但是今天,当我启动开发服务器时,jQuery只是没有加载。控制台给出了错误jQuery not defined
和$ not defined
等等。所以我检查了jQuery文件是否被包含,它们是。但是当我单击指向jquery.js
文件的链接时,它只包含以下内容。
(function() {
}).call(this);
jQuery就是不工作。
这就是我需要js库的方式:
//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require bootstrap-datepicker/core
//= require_tree .
我尝试过互换引导程序和jQuery,甚至尝试删除jQuery并仅使用引导程序。似乎没有任何效果。
有趣的是,直到昨晚它一直完美地工作!而且我不记得添加或删除任何 js 库。我只是在写Javascript代码。所以我不知道一夜之间出了什么问题。
我唯一没有尝试过的是从CDN提供jQuery。但考虑到我的应用程序将部署在哪里,这不是一个选项。
请帮忙。
我的宝石文件:
source 'https://rubygems.org'
gem 'rails', '3.2.8'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'will_paginate', '~> 3.0.beta'
gem 'will_paginate-bootstrap'
#gem 'sqlite3'
gem 'mysql2'
#gem 'devise'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'twitter-bootstrap-rails'
gem 'less-rails'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
gem 'bootstrap-datepicker-rails'
gem 'libv8'
提前谢谢。
更新:
好的,我已经弄清楚出了什么问题。我创建了一个名为jquery
的控制器来简单地测试一些 jquery 插件,因此在/assets/javascripts
下创建了一个jquery.js.coffee
文件。当我删除此文件并删除控制器时,一切开始正常工作。
有人可以解释这种行为吗?
引用时
//= require jquery
在您的清单文件中,Rails 将在几个位置查找jquery.js
的文件。这些位置在Rails.application.config.assets.paths
中定义。
在这种情况下,jquery.js
和jquery.js.coffee
都是匹配的jquery.js
,因为Coffeescript编译成Javascript。
当您生成了一个名为jquery
的控制器并随后生成了一个jquery.js.coffee
文件时,在 Rails 查看所包含 gem 的供应商目录之前,对引用文件jquery.js
的查找已经满足。因此,包含错误的文件。
— 这回答了你(第二个)问题吗?