我试图从我的rails应用程序访问文件logo.png。在部署过程中,/ app / assets中的所有内容都会被编译并放入/ public / assets中。例如,我的文件名为logo.png,如下所示:
/public/assets/logo-e66eddecdb08ac2b7fe349da2a065d87.png
当我尝试访问完整的文件名时,nginx成功地直接提供了它,因为我/ etc / sites-enabled / 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 :(得分:2)
您必须使用网址助手。
background-image: url(image-path("logo.png"));
或
asset-url("logo.png", image)
Rails会自动在生产中添加哈希值。
答案 1 :(得分:0)
如果您的文件是css
文件:
background-image: url(/assets/logo.png);
如果您的文件是sass
文件,则可以使用帮助程序:
background-image: image-url("logo.png");