块后 label_tag 的 ERB 结束标记

ERB end tag for label_tag after a block

我需要一个 ERB,它将在像这样的块之后生成带有结束标记的 HTML 标签:

<label for="pic1" class="pic_s"><div>
<img src="https://upload.wikimedia.org/wikipedia/commons/7/79/Download_link.png" >
</div></label>

我试过使用这个 ERB 代码:

<%= radio_button_tag('pic', nil, :class => idx) do %>
<div><img src="https://upload.wikimedia.org/wikipedia/commons/7/79/Download_link.png"></div>
<% end %>

但它给我语法错误。也试过:

<%= label_tag 'pic', nil, :class => idx, raw("#{image_tag image}") %>

但是还是报语法错误。我正在使用 rails 2.3.17 并且根据 https://apidock.com/rails/ActionView/Helpers/FormTagHelper/label_tag 只有版本 >=3.0.0 需要一个块。是否有另一种方法可以在不更新 rails 的情况下完成此操作?这么小的问题好像不合理,更新一下。

您尝试过使用 content_tag 吗?

# app/helpers/application_helper.rb
class ApplicationHelper
  def download_label
    content_tag :label, { :for => 'pic1', :class => 'pic_s' } do
      content_tag :div do
        image_tag('https://upload.wikimedia.org/wikipedia/commons/7/79/Download_link.png')
      end
    end
  end
end

# erb file
<%= download_label %>