我已经为我的 rails 项目完成了资产管道,并且一切正常,除了在动态帖子页面上,例如http://localhost:3000/posts/2,图像不加载。在其他任何地方都可以正常工作。
在控制台中,我收到此错误:
ActionController::RoutingError (没有路由匹配 [GET] "/posts/assets/logo.png")
但是我src="assets/m1.jpg
在图像标签中使用了但在控制台错误中链接不同!
我错过了什么?
我已经为我的 rails 项目完成了资产管道,并且一切正常,除了在动态帖子页面上,例如http://localhost:3000/posts/2,图像不加载。在其他任何地方都可以正常工作。
在控制台中,我收到此错误:
ActionController::RoutingError (没有路由匹配 [GET] "/posts/assets/logo.png")
但是我src="assets/m1.jpg
在图像标签中使用了但在控制台错误中链接不同!
我错过了什么?
不是以您当前所在的同一“文件夹”中的外观开头的链接/
。因此,当您打开时,localhost:3000/posts/2
您在posts
“文件夹”中,因此它会查找localhost:3000/posts/assets/m1.jpg
.
如果您使用 a 开始链接,/
它将从当前站点的顶部查找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">
...然后浏览器会将其视为相对 URL,并尝试相对于当前页面的 URL(即http://localhost:3000/posts/2
.
结果,浏览器将查找具有此 URL: 的图像http://localhost:3000/posts/assets/m1.jpg
,这正是您的情况。
尝试使用image_tag
帮助器:
<%= image_tag "m1.jpg" %>