0

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

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

我最初是这样写的(见下文),直到我需要src从 img 标签中删除属性并将其替换为以利用 Slick 的延迟加载功能 - 这就是我与助手data-lazy挂断的地方: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,但我一直在为我作为前端开发人员工作的项目学习它。在这里难住了。

4

1 回答 1

3

看了源码很惊讶,用这种方法生成没有属性的标签image_tag似乎是不可能的。但后来我意识到HTML 规范中的标签需要该属性。imgsrcsrcimg

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

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

当您不关心无效的 HTML 时,您可以考虑img使用link_to.

<%= link_to(
      'https://yourlinkhere.com/', 
      rel: 'noopener noreferrer', target: '_blank') do %>
  <img alt="logo" data-lazy="<%= image_path('your-image.png') %>" />
<% end %>
于 2018-10-19T06:50:59.077 回答