Rails 4图像不加载在heroku上

我花了一天的更好的一部分,试图让我的heroku应用程序加载图像。 我尝试的所有东西都可以在本地使用,但不能在部署到heroku后使用。

我有png文件保存在我的资产下的图像文件夹。 我引用这些图像与我的CSS语法,如;

#signin { background: url(<%= asset_path 'sf.png' %>); background-size: 100%; } 

在heroku中,当我检查背景时,assets / sf.png链接在那里,但是当你点击它时,它显示一个破碎的图像,表明它没有正确加载。

我已经试过切换config.serve_static_assets = false之间的config.serve_static_assets = false文件之间的production.rb文件,既不工作。

我也有

 group :production do gem 'pg' gem 'rails_12factor' end 

预编译总是成功的。

Rails 4.关于还有什么可以尝试的想法?

我需要结合几种解决scheme来完成这项工作,下面是我所做的:

的Gemfile

 gem 'rails_12factor', group: :production 

在我的Heroku控制台

 heroku labs:enable user-env-compile -a yourapp 

production.rb

 config.serve_static_assets = true config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' config.assets.compile = true 

我不需要在本地预先编译资产。

你需要做两件事来解决它。 首先,在production.rb文件中将这两行从false更改为true。

  config.assets.compile = true config.assets.digest = true 

其次,如果你的图像的语法如此

  background: url("imgo.jpg") 

将其更改为

  background: image-url("image.jpg") 

我希望它能做你的工作。

另一个问题是,我在本地预先编译我的资源,然后把它加载到heroku。 这要求您遵循不同的步骤,可以在下面find。 如果您在本地预先编译您的资产,则必须执行这些步骤,否则您对资产文件夹所做的任何更新都不会反映在产品中。

https://devcenter.heroku.com/articles/rails-asset-pipeline

RAILS_ENV=production bundle exec rake assets:precompile

commitpush送到服务器。

我有一个类似的问题,我用custom.css.scss中的以下行解决它。告诉我,如果这对你有效。

 background: image-url('sf.png') 

如果您正在使用ERB或Sass, 请参考资产的完成方式, 请参阅“Ruby on Rails指南” 。

我没有评论的声望(但是),但重要的是要注意,Heroku实验室function已被删除,所以现在你会得到一个“没有这样的function:user-env-compile”错误

更多: https : //github.com/Crowdtilt/CrowdtiltOpen/issues/251

我只是在展示图片时遇到类似的问题。 刚接触rails我不知道我可以使用:

<%= image_tag("fileName.png", alt: "File Name Fancy", size: "100x100")%>

而不是传统的HTML。

image_tag是解释在rails api中,但我觉得它的使用更好地解释在这里: http : //apidock.com/rails/ActionView/Helpers/AssetTagHelper/image_tag

所有我添加到我的应用程序是这个gem: gem 'rails_12factor', group: :production

如heroku资产pipe道文档中所述。 https://devcenter.heroku.com/articles/rails-4-asset-pipeline

Rails('4.1.5')我有一个类似的问题,在Heroku上没有显示,但显示在本地。 我不使用回形针或carrierwavegem,我在本地预编译,也使用RAILS_ENV =生产我推github,它部署罚款Heroku。

我解决了这个问题:

 config.serve_static_assets = true config.assets.compile = true config.assets.js_compressor = :uglifier config.assets.digest = true // delete precompiled assets bundle exec rake assets:clobber --trace RAIL_ENV=production bundle exec rake assets:clobber --trace 

从应用程序/资产复制图像到公共/资产。 然后:

 // tests should pass bundle exec rake assets:precompile --trace RAILS_ENV=production bundle exec rake assets:precompile --trace git commit git push 

Heroku运行良好。

我也尝试了很多解决scheme,但我发现了一个非常宝贵的解决scheme和解释1. Heroku在公用文件夹中查找资产,这意味着您必须预编译您的资产,但是如果您像我一样在寻找一种方式来预编译我的资产我的开发环境设置为gemsqlite和生产设置为PG然后你会这样做。

在你的production.rb

 config.serve_static_assets = true 

如果您没有安装gem pg,则需要将其注释掉,并更改生产环境以使用gem sqlite并运行

 RAILS_ENV=production bundle exec rake assets:precompile 

当所有的资产已经预编译,切换回你的默认设置和git添加,提交,并推送到heroku

图像不会作为默认的资产,只有css和js。 你应该看看答案

Syed Ehtsham Abbas在这个问题中, Heroku不会在Rails 4资产pipe道下编译文件