带块的自定义助手

Custom helper with block

我使用的是 Middleman 的当前版本 4.3.3。

我想定义一个接受块的自定义助手。为了简单起见,这里有一个 wrap_me 的无意义示例,它用给定的标签包装块内容。

应该可以用 capture_html provided by Padrino 来实现(在 Middleman 文档中明确提到):

module CustomHelpers
  def wrap_me(tag, &block)
    captured = capture_html(&block)
    concat_content "<#{tag}>" + captured + "</#{tag}>"
  end
end

在 ERB 中使用:

<%= wrap_me('span') do %>
  Hello
<% end %>

现在,这会在 tilt-2.0.9/lib/tilt/template.rb 的第 274 行引发 SyntaxError,它试图评估一个字符串。看起来,捕获超出了 "end".

我在这里做错了什么?如何使用 capture_htmlconcat_content 如果 Tilt 阻止助手获得块?

感谢您的帮助!

(我会在 Middleman forum 中问同样的问题。)

显然,在使用块时,必须去掉等号。以下作品:

<% wrap_me('span') do %>
  Hello
<% end %>