【问题标题】:Rails Asset Pipeline with conditional CSS files带有条件 CSS 文件的 Rails 资产管道
【发布时间】:2012-07-28 08:25:02
【问题描述】:

我有一个基于 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,但这是一个有点迟钝的解决方案(现在正是我想要的)。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 据我了解,此解决方案仅处理一个 CSS 文件的分隔。这无法处理动态处理的 CSS 负载。还是我错过了什么?
    • 不,您可以将任意文件放入某些文件夹并根据数据库中的键加载它们。这就是我认为你正在尝试做的事情。也许你需要澄清你到底想要实现什么......
    • 你说得对。但是链接标签的 HAML 视图和配置资产的 active_admin 部分让我产生了误解。而且您忘记了要提及的重要部分。我必须从 application.css 中删除这一行: *= require_tree 。我用它使它在视图上工作: 请使用 application.css 为以后的读者编辑您的帖子。谢谢。
    • 是的,您需要删除 require_tree 否则将包含所有脚本。我认为这很明显。
    猜你喜欢
    • 1970-01-01
    • 2011-10-31
    • 2014-03-08
    • 2013-11-05
    • 2013-05-31
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多