【问题标题】:Twitter Bootstrap Dropdown broken after assets precompile资产预编译后 Twitter Bootstrap 下拉菜单损坏
【发布时间】:2012-09-11 14:29:36
【问题描述】:

RAILS_ENV=production bundle exec rake assets:precompile 之后,dropdown 在开发环境中变得无响应。单击按钮时没有任何反应。但是从public/assets 中删除所有内容开始工作。它在生产模式下也能完美运行 (rails s -e production)

应用程序使用twitter bootstrap 和active admin。看起来好像是在 conflicted。

请注意,它在 Heroku 上暂存时效果很好

这是生成的 html 的快照

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

app/assets/stylesheets/application.css.scss

...
....
 *= require_self
 *= require jquery.ui.slider
 *= require_tree .

app/assets/javascripts/application.js

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

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

【问题讨论】:

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


    【解决方案1】:

    只需清理您的资产文件夹:

    rake assets:clean:all
    

    为什么会这样?

    Bootstrap 的下拉菜单中断开发只是因为您的资产被加载了两次。一次是“预编译”形式,第二次是因为您的开发环境。这会导致冲突,并且下拉菜单不再起作用。

    这就是它在 Heroku/Production 上正常工作的原因,因为只加载了预编译的资产。

    【讨论】:

    • 像魅力一样工作!谢谢
    【解决方案2】:

    据我所知,通常您不需要在本地预编译资产。它通常在登台和生产中完成。

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

    解决方案是this link。我们已经遵循它,现在我们不再需要在本地预编译资产并保留在 repo 中。

    【讨论】:

      猜你喜欢
      • 2014-10-31
      • 2012-02-21
      • 2023-03-03
      • 2012-04-03
      • 2012-04-09
      • 1970-01-01
      • 2017-04-12
      • 2017-02-23
      • 1970-01-01
      相关资源
      最近更新 更多