图像未加载到Ruby on Rails应用程序的动态页面中

时间:2017-07-09 19:34:51

标签: ruby-on-rails ruby-on-rails-5.1

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

在控制台中我收到此错误:

  

ActionController :: RoutingError(没有路由匹配[GET]   " /posts/assets/logo.png")

但我在图片标记中使用了src="assets/m1.jpg,但在控制台错误中链接不同!

我错过了什么?

3 个答案:

答案 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" %>