我在Ruby on Rails 3应用程序的视图页面中添加了一个滑块和新闻自动收录器。
<%= render 'layouts/main_slider' %>
<%= render 'layouts/news_slider' %>
这些页面包含以下脚本,我收到的错误是:
Uncaught TypeError: Object [object Object] has no method 'ticker'
Uncaught TypeError: Cannot set property 'defaults' of undefined
对于这个脚本:
<%= javascript_include_tag "application" %>
<script>
$(function () {
$('#js-news').ticker();
});
</script>
<script>
$.fn.ticker.defaults = {
speed: 0.10,
ajaxFeed: false,
feedUrl: '',
feedType: 'xml',
displayType: 'fade',
htmlFeed: true,
debugMode: true,
controls: true,
titleText: 'Latest',
direction: 'ltr',
pauseOnItems: 3000,
fadeInSpeed: 600,
fadeOutSpeed: 300
};
</script>
我也收到错误:
Uncaught TypeError: Object [object Object] has no method 'nivoSlider'
对于这个脚本:
<%= javascript_include_tag "application" %>
<script type="text/javascript">
$(window).load(function() {
$('#mainslider').nivoSlider({
effect:'fade',
pauseTime:8000,
animSpeed: 500
});
});
</script>
这是我的application.js文件:
//= require jquery
//= require jquery_ujs
//= require bxslider
//= require bootstrap
//= require jquery.ticker.js
//= require jquery.nivo.slider.js
//= require jquery-1.10.2.min.js
//= require bootstrap.min.js
//= require jquery-tablesorter
//= require_tree .
这是我的Gemfile:
source 'https://rubygems.org'
gem 'rails', '3.2.11'
gem 'mysql2'
gem 'bootstrap-sass', '2.1'
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.0.1'
gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.6'
gem 'jquery-rails', '2.0.2'
gem 'paperclip', "~> 3.0"
gem "rest-client", "~> 1.6.7"
gem 'jquery-tablesorter'
gem 'client_side_validations'
gem 'bxslider-rails'
group :development, :test do
gem 'sqlite3', '1.3.5'
gem 'rspec-rails', '2.11.0'
end
group :assets do
gem 'sass-rails', '3.2.5'
gem 'coffee-rails', '3.2.2'
gem 'uglifier', '1.2.3'
end
group :test do
gem 'capybara', '1.1.2'
end
group :development do
gem 'annotate', '2.5.0'
end
我做了一个捆绑安装和一个rake资产:clean&amp;&amp; rake资产:预编译 我的.js文件中的顺序是错误的吗?我错过了一颗宝石吗?谢谢
答案 0 :(得分:1)
看起来您的包含顺序存在问题。 你需要在依赖它的任何东西之前包含jQuery,而不是在之后再加载它(或者任何插件所做的更改通常都会消失)。
如果//= require jquery
加载jQuery(可能是这种情况,否则你的所有插件都会抛出有关未定义的jQuery
或$
的错误),那么你应该摆脱它说//= require jquery-1.10.2.min.js
的行。实际上,您也应该删除该文件(除非jquery.js
只是它的符号链接),以免//= require_tree .
包括它。