Bootstrap-sass>在资产预编译期间不解释ie_hex_str

时间:2012-05-22 19:36:19

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 twitter-bootstrap rails-3.1

我遇到了一个非常奇怪的问题:

我正在使用:

  • Rails 3.1.1
  • Bootstrap-sass 1.4.4(没时间升级到2.0)

以前的bootstrap-sass 1.4.0中的一个已知问题是与IE渐变显示相关的here。 通过引入(根据我的理解)ie_hex_str函数和IE的特定过滤器,在1.4.3中修复了这一点:

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie_hex_str($startColor)}', endColorstr='#{ie_hex_str($endColor)}', GradientType=0);

有些详情here

我仍然遇到问题,我的问题是在资产预编译后我得到了类似的内容:

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='ie_hex_str(#FFFFFE)', endColorstr='ie_hex_str(#E6E6E6)', GradientType=0);

这就是编译资产时没有解释ie_hex_str。 我没有触及任何bootstrap-sass代码,所以我不明白发生了什么......

有什么想法吗?

更新:

“有趣”的是,我有2个应用程序使用相同版本的rails和bootstrap-sass并且做了几乎相同的事情并且它们没有以相同的方式做出反应。例如,正确解释了ie_hex_str。

2 个答案:

答案 0 :(得分:0)

我无法知道发生了什么。似乎在资源预编译期间没有解释bootstrap-sass的sass mixins中的函数。

由于我无法弄清楚原因,我使用了一种解决方法:我覆盖了我正在使用的定义,例如btn:

.btn {
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#FFFFFFFE, endColorstr=#FFE6E6E6, GradientType=0);

  .primary {
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#FF049CDB, endColorstr=#FF0064CD, GradientType=0);
  }
}

使用我需要的颜色。 至少它运作良好。

答案 1 :(得分:0)

问题似乎是由application.rb中的资产管道 initialize_on_precompile 设置引起的(Rails 3.1):

config.assets.initialize_on_precompile = false

在application.rb中包含此行时,我们会出现“ie_hex_str”预编译问题。删除/评论解决了这个问题。

  • Rails 3.1.3
  • bootstrap-sass 1.4.4