将块传递给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