无法使用 HTML on Rails 应用链接到图像



我正在使用Ruby on Rails开发一个Web应用程序。我有一个图像要添加到网站,我尝试使用"img src"HTML 标签调用本地图像,但它不起作用。如果我使用 ruby 使用"图像标签"方法调用它,它可以正常工作。我只是想知道为什么它永远不会与 HTML 一起使用。

例如,我将图像添加到 app>assets>images>image1.png

在视图文件上,我按如下方式添加 HMTL:

 <img src="/app/assets/images/image1.png">

它不加载

然而,如果我在同一位置输入此代码:

<%= image-tag: "image1.png" %>

它工作正常。

有谁知道为什么会这样?我知道我有一个解决方法,但我宁愿知道为什么我的 HTML 标签与本地文件有问题,但链接到互联网上的文件就可以了。我是编码新手。干杯!

好问题。Rails资产编译器很重要,但会产生一些类似的问题。

资产编译器可能会向文件名添加缓存指纹。可以使用 <%=asset_path('images/image1.png')%> 作为 src 属性的值,也可以继续使用 image_tag

有关更多信息,请参阅 Rails 指南资产文档。

这有帮助吗?

如果你想

使用img标签,你应该:

<img src="<%= asset_path('image1.png') %>"/>
没有"/

图像"和"/"。

您可以尝试使用基于在线的示例吗?我的猜测是 ruby 没有在目录中找到您的图像。

<img src ="https://upload.wikimedia.org/wikipedia/commons/thumb/3/32/Googleplex_HQ_%28cropped%29.jpg/250px-Googleplex_HQ_%28cropped%29.jpg"> </img>
<</div> div class="one_answers">

看起来您的语法对于image_tag帮助程序不正确。试试这个:

<%= image_tag "image1.png" %>

更多信息在 Rails 文档中

问题是你使用的路径。以下是简短版本:从图像 URL 中删除app/,它应该按预期工作。

如果您使用工作代码运行应用程序,则可以通过检查 HTML 看到这就是image_tag已经在幕后为您做的事情。您应该看到如下所示的内容:

<img src="/assets/images/image1.png">

更新 img 标记以使用该路径应该可以解决此问题。

但是,如果可能的话,您应该使用image_tag!在不深入研究技术细节的情况下,如果您使用 image_tag 版本将站点部署到生产环境并查看 HTML,您可能会看到如下所示的内容:

<img src="/assets/images/image1-[sequence of characters].png">

这将有助于确保客户端在必要时从其缓存中删除过时的资产 - 技术细节可在此处找到(请参阅第 1.2 节(。如果对图像进行硬编码,则会错过资产管道提供的任何功能。