0

我已经开发一个 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 插件,因此jquery.js.coffee/assets/javascripts. 当我删除此文件并删除控制器时,一切都开始正常工作。

有人可以解释这种行为吗?

4

1 回答 1

1

引用时

//= require jquery

在您的清单文件中,Rails 将jquery.js在几个位置查找文件。这些位置在 中定义Rails.application.config.assets.paths

jquery.js并且jquery.js.coffee在这种情况下都匹配,jquery.js因为 Coffeescript 编译成 Javascript。

当您生成了一个名为的控制器jquery并随后生成了一个文件时,在 Rails 开始查看包含的 gem 的供应商目录之前,已经满足jquery.js.coffee了对引用文件的查找。jquery.js因此,包含了错误的文件。

— 这是否回答了您的(第二个)问题?

于 2012-11-08T10:15:47.657 回答