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

相關問題