资产“logo.png”不在资产管道中。

39

在Rails 5.1.3中,我更改了app/assets/images中的标志文件,然后出现错误,不知道该如何修复。有人知道吗?


The asset "logo.png" is not present in the asset pipeline.

我已经尝试了重新启动 Rails、Rails Clean、Rails 或 Rails Assets:precompile。

这是我的 config/initializers/assets.rb 文件:

# Be sure to restart your server when you modify this file.

# Version of your assets, change this if you want to expire all your assets.
Rails.application.config.assets.version = '1.0'

# Add additional assets to the asset load path.
# Rails.application.config.assets.paths << Emoji.images_path
# Add Yarn node_modules folder to the asset load path.
Rails.application.config.assets.paths << Rails.root.join('node_modules')

# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in the app/assets
# folder are already added.
# Rails.application.config.assets.precompile += %w( admin.js admin.css )
8个回答

32

我有过类似的问题。解决方法是在图片上添加文件扩展名。

= image_tag 'logo', alt: ''

= image_tag 'logo.jpg', alt: ''

那如果它是一个js文件呢? - Sandip Subedi

30

对我来说,这只是简单地重新启动Rails服务器。


5

以下是我解决问题的步骤,假设代码没有问题并已经运行:

  1. 使用以下命令清除 /tmp/assets 中的 assets 缓存:
$rake tmp:clear

此处所述:

  1. 再次使用此命令预编译资产:
$rake assets:precompile

太好了!适合我。 - Mandres

4
尝试这样做:

首先到达

app/assets/images

第二步,创建一个名为“logos”的文件夹。
app/assets/images/logos

第三步将图片放入徽标中。
app/assets/images/logos/logo.png

最后,在您的应用程序中添加以下代码:
<%= link_to image_tag("logos/logo.png"), root_path %>

它将在任何地方工作


太棒了!对我有用。 - Unkas
将Rails 5升级到6并添加没有扩展名的图像标签可能会在生产环境中出现错误,但在开发中可以正常工作。可以按照所说的添加图像扩展名来修复它。 - vidur punj

2

对于Rails 6,请确保您的图像位于以下位置:


/app/assets/images/

然后简单地。
<%= image_tag("mylogo.png", size: '200x75', alt: "logo") %>

1
我遇到了相同的问题,在这篇帖子中尝试了所有提出的解决方案,但都没有起作用...最终,将图像重命名确实解决了问题,从“compuLab50-2.png”改为“compusuno.png”...此外,我在我的“layouts/application.html.erb”文件中添加了<%= favicon_link_tag %>。我认为这是一个非常令人恼火和沮丧的问题,我认为这是Rails的一个错误(顺便说一下,我正在使用Rails 6.1.3和webpacker,但我认为它并没有多大帮助)。

0

我有一个类似的问题,上面的内容都没有帮助。对我来说,我列出了整个相对路径。所以是这样的

<%= image_tag("app/assets/.../mylogo.png", size: '200x75', alt: "logo") %>

不要改变它,只需将其更改为

<%= image_tag("mylogo.png", size: '200x75', alt: "logo") %>

这对我很有效!


-2

解决这个问题的最佳方法是将您的图像文件放置在公共文件夹中,然后在HTML.erb文件中使用以下代码。这是我个人的经验。

<img src="/logo.png" alt="" />

谢谢你的提示。如果您不想使用资产管道,这很有效。所以在这种情况下我不会推荐它,但对于我的情况来说,这很有帮助。 - Fallenhero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接