我在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和布局的一部分,在application. html. erb中呈现。第二个图像是生成到application. html. erb中的页面视图的一部分。这有什么区别吗?
有什么正确的方向吗?谢谢你的帮助。
此致!
强纳森
4条答案
按热度按时间bvuwiixz1#
请尝试以下代码:
配置/环境/生产.rb
然后运行命令:
然后将所有编译文件和menifest文件推送到heroku。
at0kjp5o2#
您似乎没有先行编译
jpeg
。请确保在
config/initializers/assets.rb
中有此行e5njpo683#
真正的问题是,您的资产没有被预编译以用于生产。
作为一个新手,Rails附带了一个编译资产清单和管道中其他文件的任务,作为一个小的解释和教训可以学习。
编译后的资产会写入
config.assets.prefix
中指定的位置。默认情况下,这是/assets目录。您可以在部署期间在服务器上调用此任务,以便直接在服务器上创建资源的已编译版本。
您可以从终端运行以下任务,以便在生产环境中显示映像或资产,并将其重新部署到hierarchic:
RAILS_ENV=production bin/rails assets:precompile
个有关详细信息,请参阅Rails文档中的预编译资产
我希望这对你的学习有所帮助。
p1iqtdky4#
接受这个答案的困难在于,现在Heroku强烈建议您使用Heroku资产编译过程,而不是预编译。
我也遇到过类似的问题,在我的例子中,图像是用
这在开发中加载得很好,但在Heroku上加载不好。这是因为我没有指定文件扩展名。Heroku上的资产构建过程似乎更严格,需要正确的扩展名。解决方案是添加相关的扩展名,在本例中是
.png
,即。我想知道问题中的jpeg文件的问题是否在于它应该有
jpg
扩展名。也许在那个时间点上,Heroku资产构建过程不识别jpeg
。顺便说一句,我在Heroku上学习编译是很困难的。我曾经预编译过资产,但我遇到了一系列奇怪的问题。Heroku给我的建议是,只有对
sprockets
有很深的理解时才预编译。当我让Heroku进行编译时,我不再遇到这样的问题。