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依赖于首先加载的工具提示。