带有条件CSS文件的Rails Asset Pipeline

时间:2012-07-30 16:14:54

标签: css ruby-on-rails-3 asset-pipeline

我有一个基于Rails 3.0的应用程序。这是一个预测应用程序,我在不同的点差上需要不同的CSS规则集,因为我使用具有不同规则的相同选择器。

以前在rails 3.0中我有一个很好的解决方案。

  1. 我的数据库中有一个列,其中包含CSS文件的名称(没有扩展名)。

  2. 我选择了这样的数据:

    @spread = Spread.find_by_id(params[:spread_id])
    @css_to_use = @spread.css_to_use
    
  3. 在我的application.html.erb中添加一个条件行:

    <%= stylesheet_link_tag @css_to_use unless @css_to_use.blank? %>
    
  4. 这很好用,直到现在。我正在为Rails 3.2工作这个应用程序,并且由于资产管道,这种魔力消失了。

    我发现了这个: Using Rails 3.1 assets pipeline to conditionally use certain css,但这是一个缓慢的解决方案(现在正是我想要的)。

    这个问题有一个很好的解决方法吗?您是否知道一种解决方案,不仅可以加载指定的文件,还可以使用依赖项?

1 个答案:

答案 0 :(得分:3)

我有一个具有类似要求的项目,我使用链接答案中显示的技术:

# app/views/layouts/application.html.haml
= stylesheet_link_tag "application", "labels/#{Whitelabel[:label_id]}"

# config/application.rb
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
config.assets.precompile += %w( active_admin.js active_admin.css labels/* )

这包括一个额外的样式表,不包含在application.rb

查看完整来源:https://github.com/phoet/on_ruby/