
Faça o Teste, crie um projeto Rails 2.0 (você já sabe fazer isto né?) e execute o comando abaixo:
./script/generate scaffold Post title:string body:text
Vamos pegar como exemplo o arquivo edit.html.erb, veja como foi criado o formulário de edição:
Title
Body
Ok, agora vamos criar um segundo projeto e usar a versão edge do Rails. Lembra como faz? Não? Então assista ao terceiro episódio do screencast deste blog.
[PAUSA PARA ASSISTIR AO EPISÓDIO]
Pronto? Beleza! Agora execute o mesmo comando acima (o primeiro código do post). Vamos pegar o mesmo arquivo e verificar como foi gerado o formulário de edição:
Hmm… diferente! E agora faz muito mais sentido. Já que temos o método label, porque não usar?
Apenas para ficar registrado, o que faz o método label?
Essa é fácil, o método label retorna uma string com o título da coluna num formato legal para se colocar na página, por exemplo, se a coluna se chama “title”, ele retorna uma string com o texto “Title”, com o “t” em maiúsculo. Essa foi fácil, manda outra…
Espera aí. Não é isso não. A resposta está ERRADA.
Na verdade o método label faz mais ou menos isso, mas ele não retorna uma string apenas com o nome da coluna, veja um exemplo:
>> f.label :title
=> <label for="post_title">Title</label>
>> f.label :title, "A short title"
=> <label for="post_title">A short title</label>
>> label :title, "A short title", :class => "title_label"
=> <label for="post_title" class="title_label">A short title</label>
Ele retorna o nome do coluna, mas dentro de uma tag <label>.
Que droga! Isto só vai sujar meu HTML
Como é? Sujar seu HTML? Calma aí, vai me dizer que você não sabe para que serve a tag <label>? Aí aí, lá vamos nós outra vez…
Percebeu o parâmetro “for” dentro da tag? O “post_title” é o nome da caixa de texto que contém o título do nosso post. Em outras palavras a tag <label> é na verdade um rótulo associado ao objeto post_title. Quando se clica no rótulo (ele não é um link, não confunda as coisas) o controle associado a ele recebe o foco.
Legal… e para que eu vou querer isso?
Robby Russell escreveu um artigo interessante em seu blog sobre este assunto. Clique aqui para ler (está em inglês).
Se você sabe o mínimo necessário de inglês para trabalhar na área de programação, leia o artigo de Robby, é bem simples, mesmo que você saiba bem pouco de inglês. Mas se você não sabe nada (deveria se preocupar com isso) use rótulos nem que seja apenas para deixar os usuários do seu sistema mais felizes.
4 Comentários em "Edge Rails: Use rótulos nas suas páginas"
[...] já falei do método label e para que servem os rótulos em HTML em um artigo mais antigo, mas parece que a galera esqueceu de criar um método label_tag para os casos mais simples. Mas [...]
Ótima dica. Reduziu ainda mais a repetição nos meus códigos.
Para quem já trabalha com XHTML, utilizar o label não é novidade e é padrão já que facilita a navegação nos campos do formulário e a seleção de itens do tipo “checkbox” e “radio”.
Carlos.
Testei aqui, minha app está na versão 1.8.4. Não funciona em versões anteriores à 2.0? É isso mesmo?
Grato.
Gygfil,
Em todos os artigos da série Edge Rails logo acima do título do post tem a versão do Rails para qual a dica é destinada, neste caso é para o Rails 2.1.
Abração!
Deixe o seu comentário!