我用Paperclip附带的图像在开发环境中显示正常,但在生产中它们显示已损坏,我检查了蚂蚁图像的URL在两者中是相同的:
<img alt="Badminton" class="img-rounded" src="/system/sports/images/000/000/012/small/badminton.jpg?1365944689" />
我正在使用Paperclip 3.0.4并在开发中使用SQLite,在生产中使用PostgreSQL,我做错了什么?
好的,我再次检查过,我在开发中的图像与生产中的图像没有相同的URL。 在开发中,我的形象是:
src="/system/sports/images/000/000/012/small/badminton.jpg?1365944689"
在生产中是:
src="/system/sports/images/000/000/012/small/badminton.jpg?1366328860"
在生产中,如果我尝试使用开发URL访问图像,它会正确显示。
这里发生了什么? 为什么将图像URL末尾的数字从开发更改为生产?
你得到了相同的网址! 最后的那个数字不是图像路径的一部分,它用于缓存......忽略它(关于这个问题)。
您的生产网址正在您的系统上查找图像。 那不可能。
谁是你的主人? 许多主机(包括Heroku,如果你使用的那些)不提供上传图像资产的能力。 您必须使用单独的服务,例如Amazon S3存储。 它简单又便宜。
我使用Rails 4.2.4遇到了同样的问题。 默认情况下,Rails不会读取公共文件夹。 此信息存在于config/environments/production.rb
。 因为Apache或NGINX已经处理了这个问题。
要解决此问题,您可以更改该行config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
, 至
config.serve_static_files = true
。 如果您使用的是以前版本的rails,则可以将其写为config.serve_static_assets = true