Ruby on rails 图像不显示在Heroku上

Ruby on rails 图像不显示在Heroku上,ruby-on-rails,heroku,Ruby On Rails,Heroku,我在RubyonRails web应用程序中的静态网页上有两个图像。两个图像位于同一位置: /app/assets/images 两者的图像标记以相同的方式生成,但某些属性除外: <%= image_tag("logo.png", alt: "Logo", width: 150) %> <%= image_tag("image.jpeg", alt: "image", class: "img-responsive") %> 两者在本地服务器上都可以正常工作,但当

我在RubyonRails web应用程序中的静态网页上有两个图像。两个图像位于同一位置:

/app/assets/images
两者的图像标记以相同的方式生成,但某些属性除外:

<%= image_tag("logo.png", alt: "Logo", width: 150) %>

<%= image_tag("image.jpeg", alt: "image", class: "img-responsive") %>

两者在本地服务器上都可以正常工作,但当我投入生产时,只会显示第一个图像。源显示第二个图像的标记未正确处理:

<img alt="Logo" width="150" src="/assets/logo-9e9dd9c19ef18b3ef26e23f11d73a8817af6cea78a5d9e1a34691d591a780987.png" />

<img alt="image" class="img-responsive" src="/images/image.jpeg" />

我不明白为什么一个有效,另一个无效

就上下文而言,第一个图像是PNG,是布局的一部分,在application.html.erb中呈现。第二个是生成到application.html.erb的页面视图的一部分。这有区别吗

有没有指向正确方向的指针?谢谢你的帮助

问候,


Jonathan

似乎您没有预编译jpeg

确保在
config/initializers/assets.rb中有这一行

Rails.application.config.assets.precompile += %w( *.jpg *.jpeg some-other.css some-other.js)
请尝试以下代码:

config/environments/production.rb 然后运行命令:

RAILS_ENV=production rake assets:precompile

然后将所有编译文件和menifest文件推送到heroku。

问题在于您的资产没有预编译以用于生产

作为一个新手,Rails附带了一个任务来编译资产清单和管道中的其他文件,可以从中获得一些解释和教训

编译后的资源将写入
config.assets.prefix
中指定的位置。默认情况下,这是/assets目录

您可以在部署期间在服务器上调用此任务,以便直接在服务器上创建资产的编译版本

您可以从终端运行以下任务,以便在生产中显示图像或资产,并重新部署到英雄:

RAILS\u ENV=production bin/RAILS资产:预编译

欲了解更多详情,请参阅


我希望这对您的学习有所帮助。

您是否正在预编译
jpeg
谢谢您的建议,但更改后没有什么区别。还有,为什么png可以工作而jpeg不行呢?谢谢。这很有效。在等待建议的过程中,我尝试将图像从jpg转换为png,这是否也有效?为什么png没有预编译就可以工作,而jpg没有呢?所有的图像、js和css都是先预编译,然后推送到heroku。然后我在heroku上正常工作。
RAILS_ENV=production rake assets:precompile