Мне нужен 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}") %>
Но все еще дает синтаксическую ошибку. Я использую рельсы 2.3.17, и согласно https://apidock.com/rails/ActionView/Helpers/FormTagHelper/label_tag только версия> = 3.0.0 принимает блок. Есть ли другой способ сделать это без обновления рельсов? Вроде такая маленькая проблема, что не оправдывает и обновление.





Вы пробовали использовать 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 %>
Хм .. Не думаю, что тут проблема с запятой. Вероятно, есть старый синтаксис хеширования с hashrocket. Я отредактировал свой ответ, можете попробовать сейчас?
Используя этот код, он дает синтаксическую ошибку в apache error.log, и приложение вообще не загружается. Вот журнал error.log: Сообщение от приложения: .... / app / helpers / application_helper.rb: 4: синтаксическая ошибка, непредвиденная ':' content_tag: label, {for: 'pic1', class: 'pic_s'} do ^ Итак, я удалил запятую, но по-прежнему выдает другую ошибку: синтаксическая ошибка, неожиданный '{', ожидается kEND content_tag: label {for: 'pic1', class: 'pic_s'} do