0

我成功部署了一个 Rails 应用程序,但是没有显示图像。这是控制台中显示的 404 错误

GET http://mydomain.com/assets/myimage.png 404 (Not Found)

在我的服务器上的应用程序目录中,有三个子目录

current  releases  shared

这是我从 Ryan Bates 那里借来的部署脚本创建的设置。

我可以在资产文件夹的图像目录中看到图像current

  current/app/assets/images$ ls
glyphicons-halflings.png  glyphicons-halflings-white.png  qb.png

但是,在shared目录的 assets 文件夹中(我猜在所有内容都编译好后将它们放在哪里),相同的图像附加了一些(我假设)缓存信息,例如图像我想要的不是

myimage.png 

反而

myimage-0bb3f134943971c95b2abdfd30f932c7.png

我想知道这是否是导致 404 错误的原因,因为(我假设)代码正在 shared/assets 目录中查找 myimage.png 。

你知道我该如何处理这个问题吗?

的内容/shared/assets

/shared/assets$ ls
application-39c95ed7b8d86b0698b6c443563e33c7.js           fontawesome-webfont-c4adb9424c8b6a6b1b9b0d2627528c4c.woff
application-39c95ed7b8d86b0698b6c443563e33c7.js.gz        fontawesome-webfont-f57557847fd1897100790d9df344ded8.ttf
application-7a6376d676fb88537b9f839687ccaad3.css          glyphicons-halflings-4e5b89324f1ac987ddf6835ef51f5fe9.png
application-7a6376d676fb88537b9f839687ccaad3.css.gz       glyphicons-halflings-white-2fa53df59ca25ee50f59f971c0c9175d.png
application-a184171300937caf263adbc5e8582ba4.css          manifest-990c8a24196fee5e9c394078c326c763.json
application-a184171300937caf263adbc5e8582ba4.css.gz       myimage-0bb3f134943971c95b2abdfd30f932c7.png
fontawesome-webfont-57b442a30fcae0d4334299c521a326a2.svg  twitter
fontawesome-webfont-8140ac47a16c8f7074e59f2ebe0657eb.eot

用于显示图像的代码

  1. 对于一张图片,我创建了一个像这样的跨度

然后为其分配背景图像

.qb{
position: absolute;
width: 50px;
height: 50px;
background-image: url('/assets/qb.png');
left: 75px;
top: 300px;

}

对于另一个图像,我有一个这样的模板,其中包含一个自动使用 Twitter 引导程序创建一个x让使用单击和删除页面元素的类

<script id="blahblah_template" type="text/underscore">
<h2> The Story <i class='icon-remove'></i></h2> 

即使图像在服务器上,它也会触发 404

Failed to load resource: the server responded with a status of 404 (Not Found) 

    http://mydomain.com/assets/glyphicons-halflings.png
4

1 回答 1

2

您应该使用 rails 提供的资产助手,它会自动创建正确的 url 到带有缓存构建的图像。这里是如何:

.qb{
position: absolute;
width: 50px;
height: 50px;
background-image: url( <%= asset_path 'qb.png' %> ); 
left: 75px;
top: 300px;

}

一旦缓存指纹发生变化,上述内容将映射qb.pngqb-0bb3f134943971c95b2abdfd30f932c7.png并更新 url。只需确保您的样式表文件名.erb末尾有,例如stylesheet.css.erb

有关更多信息,请参阅资产管道指南

[编辑]

对于 Bootstrap 与 rails 资产管道的集成,请使用像bootstrap-sass这样的 gem 。它将解决您的图像问题

于 2013-06-29T19:10:20.427 回答