在Rails中更改css文件加载顺序

时间:2014-10-15 16:00:27

标签: ruby-on-rails asset-pipeline

我想在custom.css.scss中编写一些新的css样式来覆盖某些样式。

但我发现我无法覆盖/vendor/themes

下的外部文件

我怎样才能为custom.css.scss提供高优先级,谢谢

Application.css

 *= require news
 *= require photo
 *= require_self
 *= require custom

application.rb中

  class Application < Rails::Application
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.

    config.assets.paths << "#{Rails.root}/vendor/themes"

1 个答案:

答案 0 :(得分:3)

Assets Pipeline:

的rails doc中
  

除了标准资产/ 路径之外,还可以在config / application.rb中的管道中添加其他(完全限定的)路径。例如:

config.assets.paths << Rails.root.join("lib", "videoplayer", "flash")
  

路径按照它们在搜索路径中出现的顺序遍历。默认情况下,这意味着app / assets中的文件优先,并将屏蔽lib和vendor中的相应路径。

     

请务必注意,要在清单外部引用的文件必须添加到预编译阵列中,否则它们将无法在生产环境中使用。

所以你的自定义css实际上覆盖了供应商的CSS。但也许供应商中有一些规则具有更高的CSS优先级(例如更多的css选择器),这就是为什么它们不会被覆盖的原因。