2014-04-01 138 views
1

我想從我的rails應用程序訪問文件logo.png。在部署過程中,/ app /資產中的所有內容都將被編譯並放置到/ public/assets中。例如我的文件,該文件被命名爲logo.png看起來是這樣的:Rails資產管道和服務從nginx的靜態文件

/public/assets/logo-e66eddecdb08ac2b7fe349da2a065d87.png 

當我試圖訪問一個完整的文件名nginx的直接成功提供它,因爲在我的/ etc /啓用站點-/ MYAPP這些行:

try_files $uri/index.html $uri @unicorn; 
root /home/deployer/apps/myapp/current/public 

這樣我就可以瀏覽到myserverhost.com/assets/logo-e66eddecdb08ac2b7fe349da2a065d87.png和它加載的罰款。然而,當然在我的應用程序中,我將該文件簡稱爲「logo.png」,當我加載我的主頁時,我在logo.png上找不到404。

nginx應該怎麼知道文件名在最後被散列了?

編輯:我引用這樣的標誌文件在我的SCSS文件:

#sidebar .logo-div { 
    border-bottom: 2px solid#ddd; 
    width:100%; 
    height:80px; 
    text-align:center; 
    background-image:url('logo.png'); 
    background-position:center; 
    background-repeat:no-repeat; 
    margin-bottom:20px; 
} 
+0

你是如何引用您的看法'logo.png'? – ediblecode

+0

編輯我的問題與該信息 – asolberg

回答

2

你將不得不使用的URL幫手。

background-image: url(image-path("logo.png"));

asset-url("logo.png", image)

滑軌自動將散列生產。

+0

它現在的工作? – crispychicken

+0

是的,這工作完美 – asolberg

0

如果你的文件是一個css文件:

background-image: url(/assets/logo.png); 

如果你的文件是一個sass文件可以使用助手:

background-image: image-url("logo.png");