2013-10-18 104 views
0

我正在開發與Heroku主機的Rails4應用程序,並且我遇到了一些問題: 我有一個輔助方法來隨機選擇圖像的路徑/assets/images/path_to_image,並且此輔助方法被調用我的HAML文件。它在我的本地環境中完美運作。圖片網址存儲在數據庫中。問題是Heroku將圖像名稱從logo.jpg更改爲logo-a6d14b20c77aa6466e616313edcd3d34.jpg,這使我的幫助器方法無用。任何想法如何我可以解決這個問題?這是預先編譯資產的問題嗎? 非常感謝 B.Heroku圖片URL更改

回答

0

在rails4默認資產得到消化URL與他們得到服務。

如果您希望可以使用一些中間件將資產從非摘要路徑重定向到摘要路徑。

或者您可以像下面一樣關閉production.rb文件中的摘要。

config.assets.digest = false 

如果你想要的重定向解決方案,我也可以在這裏發佈。

讓我知道!

0

是否需要預先編譯資產?

是的,我會這麼說


你得到的問題是,生產環境編譯所有資產,並因此給你所看到的散列文件名。這是一個問題的原因是,如果您在CSS或HTML中引用靜態文件(logo.png),編譯路徑將會不同,導致問題發生。我們知道如果您要引用任何資產,請始終使用動態文件(.scss/.haml/.html.erb),然後使用提供的幫助程序

解決方法是使用asset path helpers,基本上是這樣的:

image_path 
asset_path 

Heroku的

看來你與Rails的精通,所以我不與細節來煩你

Heroku的效果最好由靜態資產&預編譯它們在部署之前:

#config/production.rb 
config.serve_static_assets = true 

然後,您需要與生產環境預編譯的資產,就像這樣:

> rake assets:precompile RAILS_ENV=production 

這通過您的資產&分配所有正確的路徑,如果您使用了資產路徑助手,如上所述。在這之後,推到Heroku的&我始終預編譯的資產在Heroku上時太(我們使用asset_sync寶石):

> heroku run rake assets:precompile --app [app_name]