Rails Asset Pipeline - 编译jQuery UI资产的问题

时间:2012-04-09 02:07:32

标签: ruby-on-rails ruby-on-rails-3 jquery-ui heroku asset-pipeline

我正在使用Rails 3.2.3并部署到Heroku的Cedar Stack,我遇到了资产管道问题并编译了我需要的jQuery UI文件。

具体而言,问题在两个我认为相关的问题中表现出来:

1)在开发中,我的下拉按钮不起作用,但在生产中它们可以

2)在开发中,我的日期选择器和滑块不起作用,它们也不能在生产中工作。但是,如果我在我的视图顶部调用javascript(<script src="/assets/jquery-ui.js" type="text/javascript"></script>),则datepicker和滑块在开发中工作但不在生产中

我尝试了compiling the assets locally and also during slug compilation,但无济于事。

我的application.js:

 //= require jquery
 //= require jquery_ujs
 //= require jquery-ui
 //= require bootstrap
 //= require_tree .

我的Gemfile:

source 'https://rubygems.org'

gem 'rails', '3.2.3'
gem 'bootstrap-sass', '2.0.0'
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.0.1'
gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.5'
gem 'date_validator'
gem 'jquery_datepicker'

group :development, :test do
gem 'sqlite3', '1.3.5'
gem 'rspec-rails', '2.9.0'
gem 'annotate', '~> 2.4.1.beta'
end

group :assets do
gem 'sass-rails',   '3.2.4'
gem 'coffee-rails', '3.2.2'
gem 'uglifier', '1.2.3'
end

gem 'jquery-rails', '2.0.0'

group :test do
gem 'capybara', '1.1.2'
gem 'factory_girl_rails', '1.4.0'
end

group :production do
gem 'pg', '0.12.2'
end

我的config / environments / development.rb

 # Do not compress assets
 config.assets.compress = false

 # Expands the lines which load the assets
 config.assets.debug = true

我的配置/环境/ production.rb:

# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = false

# Compress JavaScripts and CSS
config.assets.compress = true

# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = false

# Generate digests for assets URLs
config.assets.digest = true

我的布局application.html.erb:

  <%= javascript_include_tag "application" %>

2 个答案:

答案 0 :(得分:4)

您没有向我们展示您的代码。 但我的猜测是它可能是一个dom load问题。

尝试将实例化放入jQuery()调用;

以下是twitter-bootstrap-rails的一个例子;

jQuery(function($){
  $("a[rel=popover]").popover();
  $(".tooltip").tooltip();
  $("a[rel=tooltip]").tooltip();
});

任何jquery UI自动完成程序都应该这样做

jQuery(function($){
  $("input.search-autocomplete").autocomplete({
    source: "/search"
  });
});

答案 1 :(得分:1)

尝试将'jquery-ui'的名称更改为'jquery-ui-1.0'并将该名称的文件放入'app / assets'。我猜这个名字与宝石提供的东西发生了冲突。