javascript - 未编译用于生产的Twitter引导程序jquery插件

al-*_*aif 8 ruby-on-rails jquery-plugins ruby-on-rails-3.1 asset-pipeline twitter-bootstrap

我正在使用seyhunak的gem开发一个带有Twitter Bootstrap的3.1 Rails应用程序.

在生产模式下,我能够通过管道预编译使用基本的bootstrap CSS和JS:

RAILS_ENV=production bundle exec rake assets:precompile
Run Code Online (Sandbox Code Playgroud)

使用gem文件:

group :assets do
  gem 'sass-rails',   '~> 3.1.5'
  gem 'coffee-rails', '~> 3.1.1'
  gem 'uglifier', '>= 1.0.3'
  gem "twitter-bootstrap-rails"
end
Run Code Online (Sandbox Code Playgroud)

和application.js文件:

//= require_tree .

//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require bootstrap-tab
//= require bootstrap-modal
//= require bootstrap-dropdown
//= require bootstrap-popover
Run Code Online (Sandbox Code Playgroud)

该应用程序工作正常,除了模态和下拉列表等引导插件.这些插件作为供应商资产目录中存在的静态JavaScript库存在:

/vendor/assets/javascripts/bootstrap-dropdown.js
...
Run Code Online (Sandbox Code Playgroud)

我不确定这些文件是否正在预编译,我怎么能设法这样做?

al-*_*aif 8

找到了!

这不是引导程序的问题,而是正确预编译jQuery.而且不需要为单个插件包含javascript文件.它们已经包含在主要的twitter/bootstrap中.

通过重新安排javascripts文件解决了问题,如下所示:

的application.js

//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
Run Code Online (Sandbox Code Playgroud)

的Gemfile

group :assets do
  gem 'sass-rails',   '~> 3.1.5'
  gem 'coffee-rails', '~> 3.1.1'
  gem 'uglifier', '>= 1.0.3'
  gem "twitter-bootstrap-rails"
end

gem 'jquery-rails', '>= 1.0.12'
Run Code Online (Sandbox Code Playgroud)

预先处理资产并开始工作!