我已经为我的rails项目完成了资产管道,一切正常,除了在动态帖子页面上,例如 http:// localhost:3000 / posts / 2 ,其中图片无法加载。它在其他任何地方都可以正常工作。
在控制台中我收到此错误:
ActionController :: RoutingError(没有路由匹配[GET] " /posts/assets/logo.png")
但我在图片标记中使用了src="assets/m1.jpg
,但在控制台错误中链接不同!
我错过了什么?
答案 0 :(得分:0)
不以/
内容开头的链接在您当前所在的同一“文件夹”中。因此当您localhost:3000/posts/2
时,您就在posts
'folder',因此它会查找localhost:3000/posts/assets/m1.jpg
。
如果您开始使用/
的链接,则会从当前网站localhost:3000
的顶部开始查看,因此/assets/m1.jpg
会查找localhost:3000/assets/m1.jpg
您所在的位置希望它看起来。
在您的代码中,您可以使用image_tag帮助程序,而不是手动写出图片代码:
image_tag('m1.jpg') # <img alt="M1" src="/assets/m1.jpg" />
答案 1 :(得分:0)
您应该使用帮助器<%= image_tag('m1.jpg') %>
并将您的图像放在assets/images/
目录中。
帮助器将生成图像的正确路径
答案 2 :(得分:0)
如果图像标记具有指定的以下确切图像路径:
<img src="assets/m1.jpg" etc="etc">
...然后浏览器会将其视为相对网址,并尝试将相对查找到当前网页的网址,即 http://localhost:3000/posts/2
强>
因此,浏览器会查找包含以下网址的图片: http://localhost:3000/posts/assets/m1.jpg
,这正是您所遇到的情况。
请尝试使用image_tag
帮助程序:
<%= image_tag "m1.jpg" %>