我尝试在部署之前使用以下命令预编译我的图像:
$ RAILS_ENV=production bin/rake assets:precompile
我在用于开发的模板中使用 image_tag
。
更新:据说 config.serve_static_files
在开发中默认为 true,但在生产中被关闭,因为 Assets 应该通过您的网络服务器提供。我目前只是在 heroku 上使用免费层并且仍在运行 webrick,所以我将此设置为 true,但运气不好。
更新 2:当我将 config.serve_static_files
设置为 false
时,heroku 看不到我的任何 Assets ,我的所有样式都消失了,图像仍然找不到。尽管 heroku 在推送到 master 时确实发送了一条警告消息,说所有“config.serve_static_files
所做的是启用公用文件夹中的所有内容并且与 Assets 管道无关。”。我想它与 Assets 管道无关,因为它只是提供公用文件夹中的 Assets ,而不查看我们的 Assets 目录。我还看到 heroku 在部署时运行预编译命令,所以我不需要每次都这样做。
这让我想知道我使用 image_tag
调用 Assets 的方式是否可能是问题所在,但我不确定为什么会这样?
更新 3: Assets 管道的 Rails 指南说“在常规 View 中,您可以像这样访问 public/assets/images 目录中的图像:<%= image_tag "rails.png" %>
。我正在使用此约定调用我的图像,例如 <%= image_tag("lab49", size: "80x30") %>
,但是图片仍然不会出现。
更新 4:查看我的回答。
最佳答案
如果您来到这篇文章并且您使用的是 Heroku,只有当您使用图像文件扩展名时,Heroku 才会接受您的图像。
这会起作用:
<%= image_tag "lab49.png", size: "80x30" %>
这将不起作用(尽管它会在本地起作用):
<%= image_tag "lab49", size: "80x30" %>
关于ruby-on-rails - Rails 应用程序中的静态图像 Assets 未在 Heroku 产品中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35320418/