首页 > 解决方案 > Heroku 在默认管道之外找不到资产

问题描述

在 Rails 中,资产的典型管道是:

images/*
javascripts/*
stylesheets/*

我想添加这个文件夹:

images/reports_2019/*

两种在本地有效但在 Heroku 上无效的方法

在本地,我可以访问这样的资产:

  = image_tag('reports_2019/zurich_02_pizza')

或者我可以将其添加到assets.rb文件中:

Dir.glob("#{Rails.root}/app/assets/images/**/").each do |path|
  Rails.application.config.assets.paths << path
end

然后像往常一样访问资产:

  = image_tag('zurich_02_pizza')

但是这些方法不适用于 Heroku :(

我收到这样的错误:

ActionView::Template::Error (The asset "reports_2019/zurich_02_pizza" is not present in the asset pipeline.):

谁能帮助我,并解释为什么heroku找不到我的本地机器可以找到的东西?

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

解决方案


您需要 Heroku 的文件扩展名来识别资产路径。

= image_tag('reports_2019/zurich_02_pizza.png')

或者

= image_tag('reports_2019/zurich_02_pizza.jpg')

推荐阅读