我尝试使用以下命令在部署前编译图像:
$ RAILS_ENV=production bin/rake assets:precompile
我在模板中使用的 image_tag 在开发中可以正常工作。
更新:据说在开发中 config.serve_static_files 默认为 true,但是在生产中会关闭,因为资产应该通过您的 Web 服务器提供。我目前只在 heroku 上使用免费版并且仍在运行 webrick,所以我将其设置为 true,但没有好结果。
更新2:当我将 config.serve_static_files 设置为 false 时,heroku 就无法看到我的任何资产,所有我的样式都消失了,图片也找不到。虽然 heroku 在推送到主分支时会发送警告消息,指出 "config.serve_static_files 只是启用 public 文件夹中的所有内容,并与资产管道无关"。我想这与资产管道无关,因为它只是提供了 public 文件夹中的资产,并没有查看我们的资产目录。我还看到 heroku 在部署时运行预编译命令,因此我不需要每次都这样做。
这让我想知道我使用 image_tag 调用资产的方式是否有问题,但我不确定为什么会这样?
更新3:资产管道的 rails 指南中说:“在常规视图中,您可以像这样访问 public/assets/images 目录中的图像:<%= image_tag "rails.png" %>。我按照这个约定调用我的图像,如此<%= image_tag("lab49", size: "80x30") %>,但图片仍然不会出现。
更新4:请看我的回答。
更新:据说在开发中 config.serve_static_files 默认为 true,但是在生产中会关闭,因为资产应该通过您的 Web 服务器提供。我目前只在 heroku 上使用免费版并且仍在运行 webrick,所以我将其设置为 true,但没有好结果。
更新2:当我将 config.serve_static_files 设置为 false 时,heroku 就无法看到我的任何资产,所有我的样式都消失了,图片也找不到。虽然 heroku 在推送到主分支时会发送警告消息,指出 "config.serve_static_files 只是启用 public 文件夹中的所有内容,并与资产管道无关"。我想这与资产管道无关,因为它只是提供了 public 文件夹中的资产,并没有查看我们的资产目录。我还看到 heroku 在部署时运行预编译命令,因此我不需要每次都这样做。
这让我想知道我使用 image_tag 调用资产的方式是否有问题,但我不确定为什么会这样?
更新3:资产管道的 rails 指南中说:“在常规视图中,您可以像这样访问 public/assets/images 目录中的图像:<%= image_tag "rails.png" %>。我按照这个约定调用我的图像,如此<%= image_tag("lab49", size: "80x30") %>,但图片仍然不会出现。
更新4:请看我的回答。