1

当我需要将资产添加到config.assets.precompile以及何时不需要时,我有点困惑。什么时候需要将资产添加到config.assets.precompile中?何时不需要?

(这可能是因为我的问题可能源于这个应用程序已经从rails 2.x迁移出来;在某些时候,我将尽快从3.x应用程序重建它,但不要“T有那个时间还)

这是我的问题:我有不被发现链轮,除非我在application.rb它们添加到config.assets.precompile一个.css.js文件。我无法想象我必须为每个.js.css这样做,对吗?

例如,我遇到此问题的一个文件是app/assets/stylesheets/facybox.css

application.css是:

/* 
*= require_self 
*= require_directory . 
*/ 

(而不是肯定的,require_directoryrequire_tree故意地)。

我在部署期间在我的服务器上运行rake assets:precompile。由此产生的application.css其内容为facybox.css

facybox.css在部分提到,像这样:

<% content_for :header do %> 
    <%= stylesheet_link_tag "facybox" %> 
<% end %> 

但是,当我去到包括部分页面时,我得到:

Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError in Admin#compositions 
Showing /srv/zmx/releases/5420c4dde6fbec53d78cffe78396085f263ed039/app/views/shared/_preview_assets.erb where line #6 raised: 
facybox.css isn't precompiled 

我以为是因为链轮正在寻找文件的指纹拷贝,该文件不存在,除非我将它添加到config.assets.precompile。然后,一切都是疯狂的。

有人可以解释一下吗?

回答

2

的预编译的规则很简单,所有其他的样式做同样的:

如果资产需要在应用程序的一个体现,你不需要将其添加到预编译。

如果资产需要在Rails视图中直接引用,那么您需要添加它(并且您应该从任何清单中删除它)。

1

正如您所说,facybox.css的内容已包含在您的application.css中。

这意味着,你可以从你的部分删除stylesheet_link_tag并在您使用facybox.css任何其他地方。你将不得不为你已经包含在你的application.css

相关问题