【问题标题】:Static image assets in rails app not displaying on Heroku productionRails 应用程序中的静态图像资产未在 Heroku 生产中显示
【发布时间】:2016-05-21 02:42:20
【问题描述】:

我尝试在部署之前使用以下命令预编译我的图像:

$ RAILS_ENV=production bin/rake assets:precompile

我在开发中使用的模板中使用了image_tag

更新:config.serve_static_files 据说在 dev 中默认为 true,但随后在生产中被关闭,因为资产应该通过您的 Web 服务器提供。我目前只是在 heroku 上使用免费层并且仍在运行 webrick,所以我将其设置为 true,但没有运气。

更新 2:当我将 config.serve_static_files 设置为 false 时,heroku 看不到我的任何资产,我的所有样式都消失了,图像仍然找不到。尽管 heroku 确实在推送到 master 时发送了一条警告消息,说所有“config.serve_static_files 所做的是启用公共文件夹中的所有内容并且与资产管道无关。”。我想它与资产管道无关,因为它只是提供公用文件夹中的资产而不查看我们的资产目录。我还看到 heroku 在部署时运行预编译命令,所以我不需要每次都这样做。

这让我想知道我使用 image_tag 调用资产的方式是否存在问题,但我不确定为什么会这样?

更新 3:资产管道的 Rails 指南说“在常规视图中,您可以像这样访问 public/assets/images 目录中的图像:<%= image_tag "rails.png" %>。我正在使用这个约定来调用我的图像,就像 @987654329 @,但图像仍然不会出现。

更新 4:查看我的答案。

【问题讨论】:

    标签: ruby-on-rails ruby heroku asset-pipeline


    【解决方案1】:

    如果你来到这篇文章并且你正在使用 Heroku,那么只有当你使用图像文件扩展名时,Heroku 才会接受你的图像。

    这将起作用:

    <%= image_tag "lab49.png", size: "80x30" %>
    

    这不起作用(虽然它会在本地):

    <%= image_tag "lab49", size: "80x30" %>
    

    【讨论】:

    • 您是英雄!
    • 确认这解决了我在 5.1.3 上的问题。谢谢兄弟!
    • 很高兴它有帮助!
    【解决方案2】:

    注意事项: 我的资产/图像文件夹中有 jpeg 文件。当我运行 rake assets:precompile 时,它​​们变成了 .jpg 文件。在我的 assets/images 文件夹中将它们重命名为 .jpg、预编译并再次推送后,它们就可以很好地显示在 Heroku 上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-21
      • 2014-09-29
      • 2013-03-14
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多