【问题标题】:ERB end tag for label_tag after a block块后 label_tag 的 ERB 结束标记
【发布时间】:2018-08-18 00:13:07
【问题描述】:

我需要一个 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 需要一个块。是否有另一种方法可以在不更新导轨的情况下完成此操作?这么小的问题好像没有道理,更新一下吧。

【问题讨论】:

    标签: ruby-on-rails erb


    【解决方案1】:

    您是否尝试过使用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 %>
    

    【讨论】:

    • 使用该代码会在 apache 的 error.log 上出现语法错误,并且应用程序根本无法加载。这是error.log:来自应用程序的消息:..../app/helpers/application_helper.rb:4:语法错误,意外':'content_tag:label,{ for:'pic1',class:'pic_s'}做 ^ 所以我删除了逗号,但它仍然给出另一个错误:语法错误,意外'{',期待 kEND content_tag :label { for:'pic1', class:'pic_s'} do
    • 嗯..我不认为逗号有问题。可能有 hashrocket 的旧哈希语法。我已经编辑了答案,你现在可以试试吗?
    猜你喜欢
    • 2015-04-20
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 2016-10-15
    相关资源
    最近更新 更多