是否有可能只编译/提供一部分资产?怎么样?

时间:2012-07-30 21:11:41

标签: css ruby-on-rails ruby-on-rails-3 asset-pipeline

对于某个控制器/操作,我只想提供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文件( foo bar baz ),我也故意不提供javascript。

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

1 个答案:

答案 0 :(得分: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' %>
#...

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