【问题标题】:Struggling with asset pipeline: The asset "{name}" is not present in the asset pipeline资产管道苦苦挣扎:资产“{name}”不存在于资产管道中
【发布时间】:2021-09-11 06:54:05
【问题描述】:

作为将遗留应用程序从 Rails 3 迁移到 Rails 6 的持续努力的一部分,我正在尝试找出推进资产等的最佳方式。

当我尝试添加特定资产时,我遇到了以下问题:

<%= image_tag 'images/shared/logos/image.svg' %>

图片出现在:

app/assets/images/shared/logos/image.svg

但我得到了我在标题中提到的错误:

The asset "images/shared/logos/image.svg" is not present in the asset pipeline.

任何关于如何设置更新的 Rails 来处理资产的建议都将不胜感激,我对整个 sprockets 与 webpacker 的事情有点困惑,我正在努力找出前进的最佳方式。

【问题讨论】:

  • 你不需要images,它是搜索路径的根。 &lt;%= image_tag 'shared/logos/image.png' %&gt; 应该足够了。

标签: ruby-on-rails ruby-on-rails-6 sprockets


【解决方案1】:

Rails 资产助手在一组指定的资产路径 (Rails.application.config.assets.paths) 中搜索资产。

我不确定 Rails 3,但在更高版本的 Rails 中,默认搜索路径包括 app/assetsapp/assets/stylesheetsapp/assets/images 等)下的特定子目录,但不包括 app/assets 本身。

因此,您可以从相对路径的开头删除“图像”(实际上您需要这样做):

<%= image_tag 'shared/logos/image.svg' %>

如果您现有的应用程序有大量以这种方式定义的资产,您可以尝试将app/assets 直接添加到搜索路径,方法是将以下内容添加到config/initializers/assets.rb

Rails.application.config.assets.paths << Rails.root.join('app', 'assets')

这将允许 Rails 在您完成迁移时找到您的资产。

【讨论】:

  • 我尝试从一开始就删除images,但仍然遇到同样的错误。
  • 并且没有前导斜杠(否则 Rails 将其视为绝对斜杠)?在控制台中Rails.application.config.assets.paths 里面有什么?
  • 这是一个很长的粘贴。我将添加相关内容: => ["/home/user/rails-migration/app/assets/config", "/home/user/rails-migration/app/assets/images", "/home/user /rails-migration/app/assets/javascripts”、“/home/user/rails-migration/app/assets/legacy”、“/home/user/rails-migration/app/assets/public”、“/home/用户/rails-migration/app/assets/stylesheets”、“/home/user/rails-migration/vendor/assets/images”、“/home/user/rails-migration/vendor/assets/javascripts”、“/home /user/rails-migration/vendor/assets/stylesheets",剩下的就是 gems。
  • 它不包含嵌套资产/图像路径,但包含根目录。
  • 另外,我在app/assets 的根目录上并没有真正的资产。我开始认为杀死所有子文件夹并将所有图像移动到 app/images 文件夹可能会更好......
【解决方案2】:

默认的 Rails 设置不允许将目录添加到图像文件夹。 您可以在配置中更改此设置,或者直接将所有图像直接存储到图像文件夹中。

要更改配置,请在 config/application.rb 中添加以下内容

config.assets.path <<< Rails.root.join('app', 'assets', 'images', 'shared', 'logos')

【讨论】:

  • 虽然你可以将目录添加到资产路径,但不能将目录添加到图像文件夹是非常不正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-09
  • 1970-01-01
相关资源
最近更新 更多