0

对于某个控制器/动作,我只想提供 CSS 资产的特定子集。这样的事情可能吗?

我在app/views/layouts/application.html.erb中想要这样的东西

<% if newsletter_show? %>
    <%= stylesheet_link_tag    "foo", "bar", "baz" %>
<% else %>
    <%= stylesheet_link_tag    "application" %>
    <%= javascript_include_tag "application" %>
<% end %>

注意:当条件为真时,我不仅提供特定的 css 文件(foobarbaz),我也故意不提供 javascript 。

这在开发中完美地工作,但在生产中它失败了,因为显然我们不能有不相交的样式表,因为它们是作为一个整体预编译的。有什么办法吗?

4

1 回答 1

0

选项 1:如果将 foo bar 和 baz 添加到预编译中,它应该可以工作:

在 config/application.rb 中:

config.assets.precompile += %w(foo.css bar.css baz.css)

选项 2:您还可以创建另一个 css 分组文件:

在 app/assets/stylesheets/newsletter.css 中:

/*
*= require foo
*= require bar
*= require baz
*/

在 config/application.rb 中:

config.assets.precompile += %w(newsletter.css)

在视图中:

<% if newsletter_show? %>    
  <%= stylesheet_link_tag 'newsletter' %>
#...

不要忘记重新编译资产:)

于 2012-07-30T21:21:18.910 回答