8

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

在生产模式下,我能够通过管道预编译使用基本的引导 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
...

我不确定这些文件是否正在预编译,我该如何做到这一点?

4

2 回答 2

8

找到了!

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

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

应用程序.js

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

宝石文件

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'

预编译资产并工作!

于 2012-04-20T17:24:12.613 回答
1

/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 中,因此请require从您的 application.js 中删除所有与 bootstrap 相关的文件并将它们粘贴到 vendor_js.js 中,如上所述。确保路径正确(如果您将文件放在子目录中)。还要确保分别包含每个文件,并在弹出框之前放置工具提示,因为弹出框取决于首先加载的工具提示。

于 2012-04-20T09:12:00.810 回答