ruby-on-rails – 将块传递给rails3中的标签助手

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 将块传递给rails3中的标签助手前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想用一些嵌套元素创建标签标签.我正在使用标签帮助器并尝试将内部html作为块传递,但生成HTML看起来并不像我预期的那样.
ERB:
<span>Span element</span>
<%= label("object","method") do %>
  <span>Inner span</span>
<% end %>

HTML输出

<span>Span element</span> 
<span>Inner span</span> 

<label for="object_method">
<span>Span element</span> 
  <span>Inner span</span> 
</label>

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

<span>Span element</span>
<%= label("object","method") do %>
  <% raw '<span>Inner span</span>' %>
<% end %>

HTML输出

<span>Span element</span>
<label for="object_method">
  <span>Inner span</span>
</label>

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

谢谢,
米哈尔

解决方法

我的理解是在这种情况下你需要使用label_tag帮助器:
<%= label_tag "my_label_name" do %>
  <span>Inner span</span>
<% end %>

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

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

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

猜你在找的Ruby相关文章