使用没有 src 属性image_tag帮助程序?



这可能是一个非常简单的问题,但是如何在Ruby中重写它?

<a href="https://yourlinkhere.com/" target="_blank" rel="noopener noreferrer"><img data-lazy="<%= image_path("assets/images/your-image.png") %>" alt="logo" /></a>

我最初是这样写的(见下文(,直到我需要从 img 标签中删除src属性并将其替换为data-lazy以利用 Slick 的延迟加载功能 — 这就是我挂断image_tag助手的地方:

<%= link_to image_tag("assets/images/your-image.png", alt: "logo"), "https://yourlinkhere.com/", target: "_blank", rel: "noopener noreferrer" %>

我想知道我是否必须在这里使用image_path而不是image_tag,因为我没有包含 src 属性......除非有办法使用image_tag帮助程序并且不包含 src?

谢谢!我通常不使用Ruby on Rails,但我一直在为我作为前端开发人员从事的一个项目学习它。

查看image_tag的源代码,我很惊讶使用此方法生成没有src属性的img标签似乎是不可能的。但后来我意识到 HTML 规范需要src属性来img标签。

因此,我认为您最好的选择是生成一个带有空src值的img标签,如果您的延迟加载库支持该标签。

<%= link_to(
image_tag('', alt: 'logo', data: { lazy: image_path('your-image.png') }), 
'https://yourlinkhere.com/', 
rel: 'noopener noreferrer', target: '_blank'
) %>

当您不关心无效的 HTML 时,您可以考虑使用link_to的块语法手动编写img标记。

<%= link_to(
'https://yourlinkhere.com/', 
rel: 'noopener noreferrer', target: '_blank') do %>
<img alt="logo" data-lazy="<%= image_path('your-image.png') %>" />
<% end %>

相关内容

最新更新