2013-09-22 110 views
2

我最近升級到Rails4,我有與供應商的預編譯的文件夾圖像資源的問題。我知道vendor/assets文件夾默認從編譯中刪除。Rails4問題與服務供應商提供的資產(圖像)

我增加供應商/資產/ *文件夾assets.precompile配置,獲得預編譯的資產,但我的應用程序將不顯示正在供應商/資產/圖像文件夾中的圖片。看起來該文件夾中的圖像路徑在生產中被渲染,但是具有錯誤的哈希後綴。

config.assets.precompile += [ 'themes/*', 'jquery.fancybox.css', 'vendor/assets/*' ] 

的Rails4文檔處理此問題的是真窮。我不想將文件從供應商/資產移動到應用程序/資產,因爲我喜歡將我的和外部文件分開。

我的問題是:我應該做些什麼來解決生產服務供應商提供的圖像?

感謝您的幫助

+0

請參閱我的[答案] (http://stackoverflow.com/a/34532668/3102766)在類似的問題。 – tirdadc

回答

0

你嘗試用vendor/assets/**/*

config.assets.precompile += [ 'themes/*', 'jquery.fancybox.css', 'vendor/assets/**/*' ] 
+1

沒有幫助..我得到同樣的問題.. – Aljaz

6

由於版本4個vendorlib目錄不包括在默認情況下,資產的管道。如果你想預編譯的資產在這些目錄中,你應該擴展該資產的路徑是這樣的:

(在你的application.rb):

config.assets.paths << Rails.root.join("vendor", "assets", "images") 
+0

這樣做是好的做法,還是應該將它們移動到應用程序/資產目錄? – ahnbizcad

+1

好的做法是將外部代碼(例如 - 從購買的主題)保存在'vendor'目錄中。您也可以將資產移動到「應用/資產」,但要注意不要混淆「資產」目錄。可能有一些文件名重複。 –

+1

它不應該只是'Rails.root.join(「vendor」,「assets」,「images」)'? –

1

它說,在文檔(從軌提取用於指導軌):

供應商/資產是由外部實體,如對JavaScript插件和CSS框架代碼國有資產。 請記住,與其他文件也由資產管道(圖片,樣式表等)加工引用第三方的代碼,將需要重新編寫使用傭工像asset_path

所以你把引用其他字體和/或圖像的所有css文件的供應商需要進行手動編輯,以包括資產管道輔助方法,動不動就引用其他資源。例如:

.my-class { background-image: url(<%= asset_path 'image.png' %>) } 

.logo { background: url(<%= asset_data_uri 'logo.png' %>) } 

也有font_path,IMAGE_PATH和audio_path,請注意,在上海社會科學院你只需要使用hypened版本(圖像路徑,音頻路徑...)

+0

這是它工作的唯一方法。將資產重命名爲css.erb幷包含資產管道的標籤 – juliangonzalez