caracteres inválidos em label_tag
-
06-07-2019 - |
Pergunta
Eu estou construindo um formulário simples na ERB mas o HTML produzido pela tag text_field faz com que o para atributo na tag inválida rótulo.
<div>
<p><%= label_tag "email[name]", "Name" %></p>
<%= text_field :email, :name, :class => "text_field" %>
</div>
Produz o 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>
que resulta no erro
caractere "[" não é permitido no valor do atributo "para".
Como faço para gerar o texto com sem a nested nome do parâmetro e-mail [nome] para alterar o tag label para atributo? Existe uma abordagem alternativa que produz HTML válida?
Solução
A para o atributo é suposto fazer referência o atributo ID do elemento para o qual ele é o rótulo, não o seu nome.
Portanto, não é necessário:
<div>
<p><%= label_tag "email_name", "Name" %></p>
<%= text_field :email, :name, :class => "text_field" %>
</div>
...?
Outras dicas
Leve-o para fora das citações, ou gerar o conteúdo div como uma string e adicioná-lo à div.innerHTML
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow