Rails 应用上 Ruby 的动态页面中未加载图像

Image not loading in dynamic page of Ruby on Rails app

我已经为我的 rails 项目完成了资产管道,一切正常,除了动态帖子页面,例如 http://localhost:3000/posts/2,其中图像未加载。在其他任何地方都可以正常工作。

在控制台中我得到这个错误:

ActionController::RoutingError (No route matches [GET] "/posts/assets/logo.png")

但是我在图像标签中使用了 src="assets/m1.jpg 但在控制台错误中 link 是不同的!

我错过了什么?

不以 / 开头的链接在您当前所在的 "folder" 中查找。因此,当您在 localhost:3000/posts/2 时,您在 posts 'folder' 所以它寻找 localhost:3000/posts/assets/m1.jpg.

如果您以 / 开始 link,它将从当前站点 localhost:3000 的顶部开始查找,因此 /assets/m1.jpg 将查找 localhost:3000/assets/m1.jpg 这是你希望它看起来的地方。

在您的代码中,您可以使用 image_tag 助手而不是手动写出您的图像标签:

image_tag('m1.jpg') # <img alt="M1" src="/assets/m1.jpg" />

您应该使用助手 <%= image_tag('m1.jpg') %> 并将图像放在 assets/images/ 目录中。 助手将生成图像的正确路径

如果图片标签指定了以下确切的图片路径:

<img src="assets/m1.jpg" etc="etc">

...然后浏览器会将其视为 relative URL 并尝试查找 relative 以当前页的URL,即http://localhost:3000/posts/2.

因此,浏览器将查找带有此 URL 的图像:http://localhost:3000/posts/assets/m1.jpg,这正是您的情况。

尝试使用 image_tag 助手:

<%= image_tag "m1.jpg" %>