背景圖像沒有上傳到我的視圖page.showing此錯誤。ActionController :: RoutingError(沒有路由匹配[GET]「/assets/images/control_top.png」):在rails 3.2.8
的ActionController :: RoutingError(無路由匹配[GET] 「/assets/images/control_top.png」)
我能做些什麼來解決這個問題呢?
背景圖像沒有上傳到我的視圖page.showing此錯誤。ActionController :: RoutingError(沒有路由匹配[GET]「/assets/images/control_top.png」):在rails 3.2.8
的ActionController :: RoutingError(無路由匹配[GET] 「/assets/images/control_top.png」)
我能做些什麼來解決這個問題呢?
在生產env中,Rails將不負責提供靜態資產。因此,你正在得到這個錯誤。
config.serve_static_assets = false
可以設置爲真正
或試試這個
rake assets:precompile
:
這是通過在配置/環境/ production.rb此設置在您的應用程序控制
命令(編譯和複製應用程序/資產中的圖像,css和js到public /。
如果您升級到Rails的新版本(想起Rails 4和Rails 3.2.16),並且您突然發現此錯誤,那麼您的樣式表很可能指向非指紋,非指紋,緩存的文件版本。如果您正在使用資產管道,爲了利用它,您需要使用指向指紋緩存版本文件的新幫助程序。爲此,您需要將erb嵌入到您的css文件中,或者使用sass。
不正確的(使用SASS):
.class
background: url('asset.png') no-repeat
正確的(使用SASS):
.class
background: image-url('asset.png') no-repeat
欲瞭解更多信息,請看這裏:http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets
升級到Rails 3.2.16後,這讓我感到困惑,所以它不僅僅是4.x. –
@MarkBerry感謝您的支持。我會更新我的答案以包括該版本。 –
根據文檔,人們也可以使用asset-url('yourimage.png'),所以它會出現'圖像'添加不起作用 - 只是由語法提琴手強制命名約定更改。當然,我可以在所有我工作的項目中的所有成千上萬行css上運行awk腳本,但這可能會在某些無法預料的情況下失敗並破壞事情。任何人都知道一個gem恢復了這個和類似語法的原始功能 - 奇思妙想的改變? – JosephK
,你必須運行此命令
rake assets:precompile
我一直使用資產的管道,但不得不改變硬編碼的URL,我用如下(我的開發環境):
我更新我的/config/application.rb使用資產管道:
config.assets.enabled = true
我改變了我的所有圖片的URL指向「/assets/image_without_old_image_directory_name.jpg」
因此,例如,我的圖片用於在/public/images/xxx.jpg中。我將它們移動到/app/assets/images/xxx.jpg。我將img src從/images/xxx.jpg更改爲/assets/xxx.jpg
我最終不需要執行資源預編譯,只是簡單地刪除了/ public和in/tmp,它只是工作(用於開發)。
注意*您應該確保這是在生產中設置的,而不是application.rb。剛剛給我造成了一個小時的頭痛。 –
Rails 4中的'config.serve_static_files' – rendon
'config.public_file_server.enabled = true'在Rails 5中。建議僅在development.rb中使用,而不是production.rb,因爲Web服務器(例如Apache,Nginx)應該爲生產。 – CFitz