Heroku

时间:2017-06-07 08:38:21

标签: ruby-on-rails heroku

我在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的页面视图的一部分。这有什么不同吗?

正确方向的任何指针?谢谢你的帮助。

此致

乔纳森

3 个答案:

答案 0 :(得分:3)

尝试以下代码:

配置/环境/ production.rb

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

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