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?

Foi útil?

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
scroll top