我在Ruby on Rails 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,是app.html.erb中呈现的部分布局。第二个是产生到application.html.erb的页面视图的一部分。这有什么不同吗?
正确方向的任何指针?谢谢你的帮助。
此致
乔纳森
答案 0 :(得分:3)
尝试以下代码:
config.assets.compile = true
然后运行命令:
RAILS_ENV=production rake assets:precompile
然后将所有编译文件和清单文件推送到heroku。
答案 1 :(得分:0)
好像你没有预编译jpeg
。
确保在config/initializers/assets.rb
Rails.application.config.assets.precompile += %w( *.jpg *.jpeg some-other.css some-other.js)
答案 2 :(得分:0)
问题实际上是您的资产未经过预编译才能用于生产。
对于作为新手学习的一点解释和教训,Rails捆绑了一个任务来编译资产清单和管道中的其他文件。
编译资产将写入config.assets.prefix
中指定的位置。默认情况下,这是/ assets目录。
您可以在部署期间在服务器上调用此任务,以直接在服务器上创建资产的编译版本。
您可以在终端上运行以下任务,以便您的图片或资产在制作时显示并重新部署为英雄:
RAILS_ENV=production bin/rails assets:precompile
如需更多阅读,请参阅Rails Documentations on Precompiling Assets
我希望这对你的学习有所帮助。