【发布时间】:2012-11-26 15:41:50
【问题描述】:
我想在编译时在 CSS 文件中使用 ruby 代码并使其成为静态资产,然后可能会缩小它。我该怎么做?
【问题讨论】:
标签: css ruby-on-rails-3 compiler-construction assets execute
我想在编译时在 CSS 文件中使用 ruby 代码并使其成为静态资产,然后可能会缩小它。我该怎么做?
【问题讨论】:
标签: css ruby-on-rails-3 compiler-construction assets execute
Rails 3.1+ 中的资产管道将根据文件名通过一系列预处理器发送您的资产。例如,如果您有stylesheet.css.scss,则文件通过 SASS 处理器发送以将其转换为 CSS。
当您将扩展链接在一起以便通过多个处理器发送您的资产时,乐趣就开始了。在您的情况下,您可以将资产命名为 stylesheet.css.scss.erb 以先通过 ERB 发送,然后再通过 SASS 发送。下面是一个小例子:
.some_class {
background-image: url(<%= asset_path('image.png') %>);
color: <%= some_ruby_code_to_generate_a_color %>;
}
因此,就像在常规 ERB 视图模板中一样,您可以简单地将 <%= %> 标记之间的 Ruby 代码放入您的资产中,该资产将在编译(或预编译)资产时运行。
关于缩小,这是资产管道通过一些配置选项简单地处理的事情。查看Rails guide for the asset pipeline了解更多详情。
【讨论】: