Rails资产管道 - 编译jQuery UI资产遇到问题

4
我正在使用Rails 3.2.3并部署到Heroku的Cedar Stack,我的资产管道和编译所需的jQuery UI文件存在问题。
具体地,问题表现为两个不同的问题,我认为它们是相关的:
1)在开发中,我的下拉按钮无法正常工作,但在生产中可以
2)在开发中,我的日期选择器和滑块无法正常工作,在生产中也是如此。然而,如果我在视图顶部调用JavaScript(<script src="/assets/jquery-ui.js" type="text/javascript"></script>),则在开发环境中日期选择器和滑块可以正常工作,但在生产环境中无法正常工作。
我已经尝试过本地编译资产以及在slug编译期间编译资产,但都没有成功。
我的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

我的config/environments/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个回答

4
你没有向我们展示你的代码。 但我的猜测是它可能是一个DOM加载问题。
尝试将实例化放在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
尝试将“jquery-ui”的名称更改为“jquery-ui-1.0”之类的名称,并将该文件放置在您的“app / assets”中。我猜这个名称与gems提供的某些内容冲突了。

嗨,感谢您的帮助。不幸的是,那并没有起作用。这很奇怪。如果我在视图顶部使用谷歌API调用JavaScript <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>,那么滑块和日期选择器就可以正常工作。但我仍然不知道为什么使用资产管道时它不能正确地工作。 - diasks2
然后只需下载该文件并替换您机器上的本地文件。可能您本地的jquery-ui版本存在缺陷。 - Minqi Pan
难道不是通过jquery-rails gem引入jquery-ui的吗?除非我误解了这个gem的工作方式。 - diasks2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接