将块传递给rails3中的标签助手

我想用一些嵌套元素创建标签标签。 我正在使用标签帮助器并尝试将内部html作为块传递,但生成的HTML看起来并不像我预期的那样。 ERB:

Span element  Inner span  

HTML输出:

 Span element Inner span  

当我使用标记传递内部html时,输出应该是:
ERB:

 Span element  <% raw 'Inner span' %>  

HTML输出:

 Span element  

我想知道这是我的错误或ActionView标签助手中的错误。 对于其他助手,块传递工作正常。

谢谢,Michał

我的理解是在这种情况下你需要使用label_tag帮助器:

 <%= label_tag "my_label_name" do %> Inner span <% end %> 

这样做的原因是尽管表单标签助手为您填充了“for”属性(使用模型对象属性),但您不需要使用嵌套元素。

当你有一个打开的标签标签(而不是自动关闭),包装内部内容时,不需要“for”属性,因为标签显然与其嵌套内容相关联(这称为隐式关联)。

所以,这是预期的行为 – 看起来Rails团队故意以这种方式构建它。

Scott Lowe的回答是正确的,虽然我会更进一步……你甚至不需要使用Rails label_tag。 只需使用原始html:

  

如果要将标签与表单元素(如单选按钮)相关联:

  

在Rails 3.2.11中,这对我有用:

 Span element <%= label :item, :method do %> Inner span <% end %> 

结果:

 Span element