我有根据数据库中的信息生成样式表的情况。这意味着我有一个views / users / show.css.erb,其中包含如下代码:
a {
color: <%= @user.favorite_color %>;
}
足够公平,与respond_to {| f |完美配合f.css}在我的控制器中。但是现在我想在我的CSS中使用SASS的一些时髦功能,比如变亮,变暗等,所以我想让SASS解析我的观点。但是我无法弄清楚如何在我的视图中注册SASS作为模板处理程序而不会有太多丑陋的黑客攻击。我只是不知道它是如何工作的。有没有人试过这个?
我尝试过包括SASS的功能模块,但无济于事。
答案 0 :(得分:2)
我计划在不久前为动态用户主题做同样的事情。那时候,我发现mailing list answer给你一个类似的问题,Nathan Weizenbaum(SASS的作者)让我回到了直线和狭窄的地方:
3月18日上午11点46分,Nathan Weizenbaum写道:
Sass不允许动态访问Rails代码是有原因的 - 请参阅 Sass部分:http://haml.hamptoncatlin.com/docs/rdoc/files/FAQ.htmlfor 简短的讨论。 Sass也相当慢,因为它只编译一次, 所以这对于生产环境来说可能太慢了。
此链接不再有效,但是SASS常见问题解答只有一个名为Can I use a variable from my controller in my Sass file?的部分可以回答动态问题:
如果你真的需要在每个请求上编译Sass,首先要确保你有足够的缓存设置。然后你可以使用Sass :: Engine来渲染代码,使用:custom选项传入可以从你的Sass函数访问的数据。
因此,一般而言,SASS不是针对每个请求生成动态css而设计的。相反,它旨在用作生成静态css文件的预编译解决方案。