我一直在开发一个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
文件。当我删除此文件并删除控制器时,一切正常。
有人可以解释这种行为吗?
答案 0 :(得分:1)
引用时
//= require jquery
在您的清单文件中,Rails将在几个位置查找文件jquery.js
。这些位置在Rails.application.config.assets.paths
中定义。
jquery.js
和jquery.js.coffee
在这种情况下都是jquery.js
的匹配项,因为Coffeescript会编译成Javascript。
当您生成一个名为jquery
的控制器并随后生成一个jquery.js.coffee
文件时,在Rails查看供应商之前,已经满足了引用文件jquery.js
的查找包含宝石的目录。因此,包含了错误的文件。
- 这是否回答了你的(第二个)问题?