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

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

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

RAILS_ENV=production bundle exec rake assets:precompile 

使用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 

和application.js文件:

 //= require_tree . //= require jquery //= require jquery_ujs //= require twitter/bootstrap //= require bootstrap-tab //= require bootstrap-modal //= require bootstrap-dropdown //= require bootstrap-popover 

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

 /vendor/assets/javascripts/bootstrap-dropdown.js ... 

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

找到了!

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

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

的application.js

 //= require jquery //= require jquery_ujs //= require twitter/bootstrap 

的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' 

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

/vendor/assets/javascripts放置一个文件vendor_js.js其中包含以下内容:

 //= require_tree . 

现在在/app/assets/javascripts/application.js包含一行

 //= require vendor_js 

您可以自定义vendor_js.js以仅包含特定供应商插件,例如,使用//= require bootstrap-dropdown仅包含供应商javascripts目录中的引导程序下拉列表。

更新评论意见

由于您将bootstrap JS文件手动放入vendor / javascripts,请从application.js中删除所有与bootstrap相关的require并将其粘贴到vendor_js.js中,如上所述。 确保您获得正确的路径(如果您将文件放在子目录中)。 还要确保单独包含每个文件,并在弹出窗口之前包含工具提示,因为popover依赖于首先加载的工具提示。