Criando o primeiro helper no Rails

Como aconteceu com o caso das rotas, aprender a usar helpers é uma das coisas mais satisfatórias em Rails. Digo isso como iniciante, pois isso já deve ser uma coisa totalmente trivial para os mais experientes.

No meu caso, tenho um form com uma lista de checkboxes, que podem variar em número de acordo com o conteúdo de uma tabela. Ou seja, se na tabela tiver 5 itens, terei 5 checkboxes. Se eu apagar um item, quando recarregar a página, serão mostrados 4 checkboxes.

Veja abaixo como eu resolvi o problema com um helper.

Um dos pilares filosóficos do Rails (bonito isso, hein?), é o conceito DRY, ou seja Don’t Repeat Yourself. Uma das explicações mais legais sobre isso, você pode conferir nesse post aqui.

Uma das passagens que mais me chamou a atenção foi essa aqui:

“Don’t repeat yourself” não é somente sobre duplicar trechos de código, também tem muito a ver com o comportamento funcional do seu código.

Os helpers foram criados justamente pensando em uma programa DRY, ou seja, sem repetição de código, conceito ou funcionalidade.

Mas descobri que eles podem ser muito úteis também para geração dinâmica de forms.

Na estrutura de diretórios do Rails, em ../app/helpers, você encontrará helpers específicos para controller da sua aplicação. Se você criar um helper dentro de <seu_controler>Helper.rb, esse helper estará disponível somente para aquele controller <seu_controler> especificado.

Agora, se você colocar seu helper no application_helper.rb, seu helper estará disponível para todos helpers.

Para o caso dos múltiplos checkboxes, veja o helper show_connections_types:

module ConnectionRequestsHelper
def show_connections_types
output = ''
conn_types = ConnectionType.find(:all, :conditions => ['archive <> ?', true])

group = 1

conn_types.each do |conn|
output << '
' + conn.name + '
'
group = group + 1
end

return output
end
end

O que esse helper faz? Ele recupera todos os itens da tabela connection_types e gera o código HTML do form, usando cada um dos itens da minha tabela.

O resultado HTML final será assim:

Trabalhamos juntos no mesmo projeto.
Foi meu instrutor(a).
Fui seu instrutor(a).
Foi meu colega de classe.
Conheci em um evento.
Li uma publicação dele(a), como livro, artigo ou blog.

Na minha view, quando eu quizer usar o helper, apenas uso a seguinte linha:


Conclusão

Os helpers são peças fundamentais em Rails. Aprender a usá-los dará a você muita munição para solução dos problemas nas views.

Em um próximo post, vou mostrar como os helpers estão me ajudando a ser DRY em minhas views.

3 Resultados

  1. Faltou a seguinte linha 🙂

  2. pois é, faltou mesmo :/

  3. Faltou o mais importante, a última linha. =(