gpt4 book ai didi

ruby-on-rails-3 - 在 Rails 3.1 下根据请求使用自定义变量编译 Sass

转载 作者:行者123 更新时间:2023-12-04 07:09:51 25 4
gpt4 key购买 nike

在 Rails 3.1 应用程序中,一个 Controller 需要使用一组自定义变量让其所有 View 根据请求编译它们可能需要的任何 Sass 样式表。理想情况下,编译必须通过 Assets 管道进行,以便生成基于内容的 Assets 名称(包含内容的 MD5 哈希的名称)。对于解决方案而言,重要的是使用纯 Sass 功能,而不是诉诸于例如 Sass 样式表的 ERB 处理。

根据我在这里和其他地方所做的研究,以下似乎是一种可能的方法:

  1. 设置变量访问

    • 使用自定义 Sass 函数创建某种类型的变量访问器桥接器,例如 Konstantin Haase 中描述的here (gist)。这看起来很容易做到。

    • 通过 Sass 部分配置所有变量访问,例如,在 _base.sass 中,这是 Compass 方式。部分可以使用上面定义的自定义函数。也很简单。

  2. 捕获所有 Assets 引用

    • 装饰 View 对象的asset_path方法。我有这个运作良好。

    • 使用 Sprockets::Environment 的自定义子类解析引用。这也很有效。

  3. 无论文件修改时间如何,都强制重新编译 Assets

    • 我还没有找到好的解决方案。

    • 我见过通过实例化一个新的 Sass::Engine 并传递将在 Sass::Script::Functions::EvaluationContext 中可用的自定义数据来手动启动 Sass 处理的示例。 .这种方法的问题是我必须自己管理文件命名和路径,而且我总是冒着可能偏离 Sprockets 所做的事情的风险。

    • 我找不到任何在每个请求的基础上强制 Sprockets 处理的示例,无论文件修改时间如何,这也允许自定义变量传递。

对于一般方法的评论以及关于如何最好地处理 (3) 的任何具体指示/建议,我将不胜感激。

最佳答案

模拟。

这是可能的。看这里SASS: Set variable at compile time

我写了一个解决方案来解决它,我会尽快发布并推送到这里,以防您或其他人仍然需要它。

关于ruby-on-rails-3 - 在 Rails 3.1 下根据请求使用自定义变量编译 Sass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8373062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com