jquery.js中的空体函数 - 带有jQuery-rails gem的Rails 3.2

时间:2012-11-08 07:00:41

标签: jquery ruby-on-rails

我一直在开发一个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 .

我尝试过互换bootstrap和jQuery,甚至尝试删除jQuery并仅使用bootstrap。似乎没有什么工作。

有趣的是,它一直工作到昨晚!我不记得添加或删除任何js库。我只写了Javascript代码。所以我不清楚一夜之间哪里出了问题。

我唯一没有尝试过的是从CDN提供jQuery。但考虑到我的应用程序将在何处部署,这不是一个选择。

请帮忙。

我的Gemfile:

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文件。当我删除此文件并删除控制器时,一切正常。

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

1 个答案:

答案 0 :(得分:1)

引用时

//= require jquery

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

jquery.jsjquery.js.coffee在这种情况下都是jquery.js的匹配项,因为Coffeescript会编译成Javascript。

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

- 这是否回答了你的(第二个)问题?