【发布时间】:2011-11-07 02:23:09
【问题描述】:
在 Rails 3.1 应用程序 (3.1.0.rc8) 的生产模式下,我遇到了背景图像未显示的问题。我也在使用 sprockets 2.0.0 和乘客 3.0.8。
我的样式表是 .scss 并在背景部分使用 image_tag('...')。当我部署时,我正在预编译资产。
我的生产服务器使用 Apache2 和 Passenger,应用程序部署到子 URI。虚拟主机定义为:
ServerName wibble
DocumentRoot /srv/www
...
RailsBaseURI /myapp
<Directory /srv/www/myapp>
Options -MultiViews
</Directory>
应用程序实际上部署到 /srv/applications/myapp 并且我创建了一个从 /srv/www/myapp 到 /srv/applications/myapp/current/public 的符号链接。
样式表提供正确,但是当我检查元素是否有徽标时,它会显示为:
url("http://wibble/assets/logo-xxx.png")
代替:
url("http://wibble/myapp/assets/logo-xxx.png")
实际上,如果我在 Opera 中使用编辑声明更改 URL,它确实可以正确显示徽标。这表明我正确地引用了图像,并且它被正确地预编译。实际的样式表很好,所以我也正确地选择了资产。就好像 RailsBaseURI 错过了 url 路径。
我在样式表中尝试了各种方法——使用 .erb、asset_path、/myapp/logo.png、myapp/logo.png——但没有任何效果。在瘦服务器的开发模式下一切正常。
任何帮助将不胜感激。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1