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提到的资产。
对于
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"); |
没有更多的子目录。
编辑这是错误的。请参阅下面的注释以了解正确的用法。