3

我有一个基于 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? %>
    

到目前为止,这运作良好。我正在为 Rails 3.2 开发这个应用程序,并且由于资产管道,这种魔力消失了。

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

这个问题有什么好的解决方法吗?您是否知道一种不仅可以加载指定文件而且具有依赖关系的解决方案?

4

1 回答 1

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/

于 2012-07-30T16:30:30.857 回答