Rogério Marques
14 agosto 2018 - 09:00 | Atualizado em 29 março 2023 - 17:31
Ruby on Rails é um framework gratuito cujo objetivo é acelerar o desenvolvimento de aplicações web. Utiliza o padrão de arquitetura MVC, tem Ruby como linguagem de backend (que dá ao framework uma excelente performance porque é desenvolvida em C) e é mantido e atualizado pela comunidade.
Saiba como criar um CRUD de uma agenda em poucos minutos.
Nesse projeto, criaremos um CRUD (Create Retrieve Update Delete) de uma agenda de contatos. Esse artigo visa apenas ensinar o básico do framework, mostrar suas facilidades e fazer com que o leitor conheça essa ferramenta incrível de desenvolvimento.
MVC (Model View Controller): padrão de arquitetura que divide a aplicação em três partes interconectadas, separando a representação da informação do modo que ela é apresentada. View é a camada de interação com usuário, Model é a camada de manipulação e regra de negócios e o Controller é responsável por receber todas as requisições do usuário, processar informações e devolver para a view.
Quando criamos a aplicação sem passar nenhum parâmetro para o Rails, o banco de dados padrão é o sqlite3. A configuração pode ser vista e editada no arquivo /config/database.yml
Utilizaremos o modelo padrão do rails e vamos criar os modelos em inglês, pois, quando quisermos relações de um para vários, basta fazer pequenas alterações nos models, deixando-os no plural para que o framework trate do banco de dados por nós. O scaffold nos ajuda a criar de uma vez as models, controllers, views e helpers (veremos mais a frente) do padrão MVC. No terminal digite:
Os códigos acima nos criam o tipo com uma descrição, um contato (com nome, email, uma referência para tipo e observações), endereço e telefone.
Perceba que quatro arquivos foram criadas na pasta /db/migrate:
Cada arquivo desses é uma “migração” com características das tabelas criadas ou editadas, como mostra a figura abaixo:
Esse comando pode ser digitado separadamente ou na mesma linha do terminal na ordem correta: rake db:create db:migrate
As migrações são uma maneira eficiente de alterar e dar um versionamento à estrutura de seu banco de dados de uma maneira extremamente eficiente. A cada mudança um novo arquivo de migração é criado, sendo assim, todos os desenvolvedores envolvidos naquele projeto poderão ver as alterações no banco de dados de acordo com seu histórico de migrações.
7 – Vamos verificar como nossa aplicação está desenvolvida até agora
No terminal, digite:
Caso tenha algum problema com o endereço passado, pode-se forçar passando mais um parâmetro pro terminal:
A webpage de boas vindas do Rails deve aparecer. Agora, podemos alterar os endereços para verificar que nossas views do CRUD foram efetivamente criadas. Nosso framework segue o seguinte padrão para acesso:
Para que nossa página inicial seja carregada sempre que tentarmos acessar o link raiz de nossa aplicação, temos que alterar o arquivo /config/routes.rb, informando que a raiz é nossa home/index sempre no padrão controller#action:
Vamos deixar nossa agenda mais útil e colocar um link para que o usuário acesse todos os quatro modelos criados. Para fazer isso, vá até o arquivo /app/views/home/index.html.erb e deixe ele assim:
O helper link_to “Descrição”, model_path faz o papel do link clássico do html
<a href=”http://localhost:3000/kinds“>Tipos</a> com o intuito de deixar o código mais limpo e legível.
O que o link_to faz aqui com o parâmetro kinds_path é nos direcionar para o endereço http://localhost:3000/kinds (ou outro model que desejamos acessar – phones_path, addresses_path…)
Verifique se todos os links estão funcionando normalmente.
Veja que de acordo com o que foi desenvolvido até agora, nós teríamos que digitar sempre o tipo a que aquele contato pertenceria:
Vamos criar uma caixa de seleção para que os tipos já cadastrados apareçam na hora da inserção:
Foi definido anteriormente que:
Kind – antes
Kind – depois
Contact – antes
Contact – depois
Atualizar o controller de contacts – contact_params para que na hora da criação de um novo, ele possa receber os atributos das outras tabelas (telefone e endereço).
Antes
Depois
Vamos agora atualizar nosso form para que na criação do contato, os campos de endereço e telefone já apareçam e sejam salvos. Adicione abaixo do collection_select dos tipos essa parte do código. Nela, podemos ver que criamos um formulário para os campos de endereço e telefone… e que para cada campo apareça sua label e seu tipo (todos por enquanto serão text_field).
É exatamente o que o .build_campo faz. Esse objeto faz com que os campos de endereço e telefone apareçam na hora da criação de um contato.
Criando um HELPER para que o campo de estados seja uma caixa de seleção simples, idêntica ao “tipos”. A diferença é que os estados são fixos, logo, podemos criar um helper que pode facilitar essa criação da caixa de seleção. Vá ao arquivo /app/helpers/application_helper.rb e insira:
Veja que ao criarmos o formulário dos campos de endereço, já criamos o campo do estado com um select na função options_for_states do helper application_helper.
Primeiro contato criado com sucesso!
Veja que no contacts_path, ou no link http://localhost:3000/contacts, ele criado já foi adicionado à lista de contatos.
Remova o contato e verifique que o CRUD está funcional:
Veja que ao listarmos nossos contatos, o tipo não é mostrado, pois o que aparece é sua referência. Para resolver esse “problema”, vá ao arquivo appviewscontactsindex.html.erb e altere a linha <td><%= contact.kind %></td> por:
E veja como ficou:
Faça isso para as demais telas que você ache necessário como um exercício.
Com este artigo pudemos ver o desenvolvimento de um CRUD simples de uma agenda. Caso você tenha gostado do framework e pretenda estudar um pouco mais, deixo algumas sugestões de como esse sistema pode ficar mais robusto e intuitivo:
Espero trazer mais conteúdos de RoR futuramente.