关于css:Heroku不提供背景图片,localhost呢?

Heroku does not serve background image, localhost does?

我的rails应用程序(rails 4.0.0.rc2、ruby 2.0.0p195)有问题。

这种行为很奇怪:我的本地主机正确地显示了背景图片,Heroku没有。

在Heroku日志中,我可以看到以下错误:

1
ActionController::RoutingError (No route matches [GET]"/assets/piano.jpg"):

我通过在custom.css.scss中插入以下代码创建了背景图像:

1
2
3
4
5
6
7
.full {
  background: image-url("piano.jpg") no-repeat center center fixed;
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
}

我用我在静态页面上的以下代码触发了这一点:

1
2
3
<body class="full">
....
</body>

我已经开始生产宝石了:

1
2
3
4
group :production do
  gem 'pg'
  gem 'rails_12factor'
end

在production.rb中,我将以下设置设置设置为true:

1
config.serve_static_assets = true

但是,没有显示图像。你能帮我吗?


确保在production.rb文件中设置这些

1
2
3
4
config.cache_classes = true
config.serve_static_assets = true
config.assets.compile = true
config.assets.digest = true


我自己找到了解决问题的方法:

1
RAILS_ENV=production bundle exec rake assets:precompile

在我的控制台中运行此命令后,图片显示正确。

以前我只试着跑:

1
rake assets:precompile

单凭这一点没有帮助。您必须在命令中处理生产环境。

希望能为其他用户提供参考。


我需要其他答案的组合来为我工作。

我需要使用@brock90的生产配置设置,并预编译Alex提到的资产。


对于background财产和sass:

1
background: image-url("my_image.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);

图片/目录中的子目录中没有图片

如果有人对此仍然有问题的话。我到处寻找解决方案,我想我什么都试过了。对于我的案例,我有这样的例子

1
background-image: url("containers/filled/Firkin-Keg-5-Gallons_filled.png");

所以我在图片里有文件夹。这对本地主机很有用,但对Heroku不起作用。

1
background-image: url("Firkin-Keg-5-Gallons_filled.png");

没有更多的子目录。

编辑这是错误的。请参阅下面的注释以了解正确的用法。