0

我想在编译时在 CSS 文件中使用 ruby​​ 代码并使其成为静态资产,然后可能会在之后将其缩小。我怎样才能做到这一点?

4

1 回答 1

1

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 指南以获取更多详细信息。

于 2012-11-26T16:07:19.023 回答