【问题标题】:Images not being served on Heroku Rails 5 App图像未在 Heroku Rails 5 应用程序上提供
【发布时间】:2018-04-01 05:32:45
【问题描述】:

我在 Heroku 上使用 Rails 5 从我的资产管道提供静态文件时遇到问题。我查看了其他问题,但似乎都没有解决问题。

我明白了 HomeController#index 缺少此请求格式的模板 和变体。 request.formats: ["image/png"] request.variant: []

我的配置/production.rb

    config.assets.compile = false

    config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?

    if ENV["RAILS_LOG_TO_STDOUT"].present?
     logger           = ActiveSupport::Logger.new(STDOUT)
     logger.formatter = config.log_formatter
     config.logger = ActiveSupport::TaggedLogging.new(logger)
    end

【问题讨论】:

  • 错误消息missing a template... 告诉您Rails 找到了匹配的路由,但它导致了控制器方法。因此,您的问题可能与您的 routes.rb 或文件命名有关。丢失的文件在哪里(publicapp/assets)?你如何链接视图中的文件?呈现的 HTML 中生成的路径如何?你的config/routes.rb 怎么样? RAILS_SERVE_STATIC_FILES 是否真的设置在 Heroku 上?

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


【解决方案1】:

在本地编译所有资产并推送到heroku。

尝试以下步骤:

  1. 在 config/environments/production.rb 中更改行 config.assets.compile = true

  2. 运行命令:

    RAILS_ENV=production rake assets:precompile

  3. 将所有带有 manifest.rb 的编译资源推送到heroku

【讨论】:

  • 编译的资产和工件不应在版本控制中。
【解决方案2】:

在本地编译资产不是一个好的做法,应该避免,因为工件不应该在版本控制中。我在尝试使用 sass 设置背景图像并使用 image-url 帮助程序生成正确的 url 时遇到了同样的问题。

background: image-url('my-image.png') no-repeat center;

对于图像标签和 erb css 模板,有 image_pathimage_tag rails 助手。

【讨论】:

    猜你喜欢
    • 2017-01-29
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多