gpt4 book ai didi

ruby-on-rails - 有没有办法将 application.scss 渲染为 css 字符串?

转载 作者:数据小太阳 更新时间:2023-10-29 08:56:48 24 4
gpt4 key购买 nike

我正在尝试使用需要 css 字符串的 Roadie gem 为模板(用于 html 到 img,而不是用于电子邮件)内联一些 css。我想将我的 application.scss 文件转换为字符串,但找不到可靠的方法。目前我只是从浏览器复制它,但我想以编程方式进行。

我试过的是:

str = File.read("app/assets/stylesheets/application.scss")
se = Sass::Engine.new(str, :syntax => :scss)
se.render

这给我带来了由像 Bootstrap sprockets 这样的 gems 加载的 sass 的问题:

Sass::SyntaxError: File to import not found or unreadable: bootstrap-variables

执行此操作的最佳方法是什么?

最佳答案

请发布你的 application.scss 但看起来那个文件可能正在尝试加载类似 @import bootstrap-variables Sass::Engine 不知道 bootstrap-variables.scss 文件是否与 application.scss 不在同一个目录中,尽管如果您使用的是 rails bootstrap-例如 Sass gem 。

确保您的 @import 文件具有有效的 sass 并且命名正确并且与 application.scss 位于同一目录中对于可能导入的其他文件也是如此application.scss.

那么你应该能够做到:

css = Sass::Engine.for_file('application.scss', {}).render

如果您尝试在 rails 中执行此操作,那么您可能已经通过 gem 加载了 Bootstrap ,并且 rails 将处理 Assets 的预编译并知道在哪里寻找导入。不必为了您的目的而尝试弄清楚一切都在哪里,运行 bundle exec rake assets:precompile 可能会更容易,然后您可以执行如下操作:

filename = Dir.entries('public/assets/').find{|f| f.match(/application-\w+.css$/)}
css = Sass::Engine.for_file(filename, {}).render
#css is the flat css compiled from the rails precompile

但是既然你已经预编译了你就可以了

css = 
File.read(
Dir.entries('public/assets/').find do |filename|
filename.match(/application-\w+.css$/)
end
)

神奇的 bundle exec rake assets:precompile 将生成一个平面 css 文件,其名称类似于 application-a30bb6a9753337386468559f6f44286d58d74f88ddc710b5d5832a67b576d16a.css

所以我们在上面使用正则表达式来模式匹配文件名。

关于ruby-on-rails - 有没有办法将 application.scss 渲染为 css 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52690441/

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