资产预编译后,Twitter Bootstrap Dropdown中断

时间:2012-09-19 09:32:58

标签: jquery ruby-on-rails ruby-on-rails-3 twitter-bootstrap activeadmin

RAILS_ENV=production bundle exec rake assets:precompile public/assets后,dropdown在开发环境中无响应。点击按钮没有任何反应。但是,删除rails s -e production中的所有内容都会开始工作。它也适用于生产模式(<li id="organization-selector" class="dropdown"> <a href="/" data-toggle="dropdown" data-target="#organization-selector" class="dropdown-toggle"> RedKivi <b class="caret"></b> </a> <ul class="dropdown-menu"> <li> <a href="/organizations/1">RedKivi</a> </li> <li> <a href="/organizations/2">BoTree</a> </li> <li class="divider"></li> <li> <a href="/organizations/new">New organization</a> </li> </ul> </li>

该应用使用twitter bootstrapactive admin。看起来像是conflicted

请注意,它在Heroku

上的分段工作正常

以下是生成的html

的快照
...
....
 *= require_self
 *= require jquery.ui.slider
 *= require_tree .

应用/资产/样式表/ application.css.scss

//= require jquery
//= require jquery_ujs
//= require jquery.ui.slider
//= require bootstrap
//= require_tree .

应用/资产/ Javascript角/ application.js中

{{1}}

预编制资产的做法是什么?

2 个答案:

答案 0 :(得分:3)

只需清理资源文件夹:

rake assets:clean:all

为什么会这样?

Bootstrap的Dropdown仅在开发时中断,因为您的资产被加载了两次。一旦处于“预编译”形式,第二个因为您的开发环境。这会导致冲突,并且下拉列表不再起作用。

这就是为什么它可以正常使用Heroku / Production,因为只加载了预编译的资产。

答案 1 :(得分:0)

我了解到,通常您不需要在本地预编译资产。它通常在分期和生产中完成。

实际上,在Heroku上进行演出时,我们正在ActionView::Template::Error (active_admin.css isn't precompiled) error。所以我们在本地预编译资产,在部署到Heroku之前推送到远程仓库来修复它。这是解决方法和问题的原因。

解决方案是this link。我们已经关注它,现在我们不再需要在本地预编译资产并保留回购。