Ruby on Rails应用程序上的Javascript订单

时间:2013-12-30 16:20:55

标签: javascript jquery ruby-on-rails ruby-on-rails-3 rubygems

我在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文件中的顺序是错误的吗?我错过了一颗宝石吗?谢谢

1 个答案:

答案 0 :(得分:1)

看起来您的包含顺序存在问题。 你需要在依赖它的任何东西之前包含jQuery,而不是在之后再加载它(或者任何插件所做的更改通常都会消失)。

如果//= require jquery加载jQuery(可能是这种情况,否则你的所有插件都会抛出有关未定义的jQuery$的错误),那么你应该摆脱它说//= require jquery-1.10.2.min.js的行。实际上,您也应该删除该文件(除非jquery.js只是它的符号链接),以免//= require_tree .包括它。