我正在ERB中构建一个简单的表单,但是text_field标记生成的HTML会使标签标记中的 for 属性无效。

<div>
  <p><%= label_tag "email[name]", "Name" %></p>
  <%= text_field :email, :name, :class => "text_field" %>
</div>

制作HTML

<div>
  <p><label for="email[name]">Name</label></p>
  <input class="text_field" id="email_name" name="email[name]" size="30" type="text" />
</div>

导致错误

  

字符“[&quot;是不允许的   属性值“for”。

如何在没有嵌套参数名称email [name]的情况下生成文本,以更改属性的标签标记?是否有另一种方法可以生成有效的HTML?

有帮助吗?

解决方案

for属性应该引用它作为标签的元素的ID属性,而不是它的名称。

因此,您不需要:

<div>
  <p><%= label_tag "email_name", "Name" %></p>
  <%= text_field :email, :name, :class => "text_field" %>
</div>

...

其他提示

将其从引号中取出,或将div内容生成为字符串并将其添加到div.innerHTML

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top