【问题标题】:Is it possible to compile/serve only a subset of assets? How?是否可以只编译/提供一部分资产?如何?
【发布时间】:2012-07-30 21:11:40
【问题描述】:

对于某个控制器/动作,我只想提供 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。

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

【问题讨论】:

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


    【解决方案1】:

    选项 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' %>
    #...
    

    别忘了重新编译资产:)

    【讨论】:

    • 非常感谢!我使用了选项 2。
    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多