2014-04-01 77 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");