# CRUD
Acrônimo para **Create**, **Read**, **Update**, **delete**. O CRUD se refere a um conjunto de funções que que manipulam um objeto dentro do sistema. Em um aplicativo Rails, o ideal é que cada **modelo** deve ter um **controlador** com suas funções de **CRUD**.
CRUD |
Ação |
Descrição |
CREATE |
new |
Formulario para criar nova entrada. |
create |
Processar a nova entrada. |
READ |
list |
Listar as entradas. |
show |
Mostrar uma entrada unica. |
UPDATE |
edit |
Formulario para editar uma entrada. |
update |
Processar a edição de uma entrada. |
DELETE |
delete |
Formulario para deletar uma entrada. |
destroy |
Processar a ação de deletar uma entrada. |
O **CRUD** normalmente vai dentro de um **Controlador** que tem um nome em plural e está linkado a apenas um **modelo**.
Ele também ajuda a criar URLs limpas e simples:
- paginas/nova
- fotos/deletar
- usuario/editar
## Read
### List
Para criar uma função basica para listar todos os objetos de um modelo, primeiro precisamos criar um metodo no **controlador**. Atravez das convenções do Rails, o nome desse metodo vai ser igual ao nome do template do **View**. Precisamos carregar também uma **instance variable** no controlador com a lista de objetos. Essa variavel vai estar disponivel no View.
#### Exemplo
1- Levando em consideração que o modelo **Paginas** foi criado e tem o paramentro **titulo**, alem de entradas no banco de dados.
2- Gere um controlador: ```$ rails generate controller paginas```
3- No novo arquivo do controlador ```app/controllers/paginas_controller.rb```:
class PaginasController < ApplicationController
def lista
@paginas = Pagina.order("paginas.titulo ASC")
edn
end
4- Crie o arquivo ```app/views/paginas/lista.html.erb```
Lista de páginas:
<% @paginas.each do |pagina| %>
-
<%= link_to(pagina.titulo {:action =>'mostrar', :id => pagina.id}, :class => 'link') %>
<% end %>
5- (re-)inicie o servidor com o comando ```$ rails server``` e entre na página ```http://localhost:3000/paginas/lista``` para ver a lista de páginas no sistema.
### Show
Para criar a ação basica de mostrar um objeto, é necessario ter o *id** ou algum outro parametro para achar a entrada que está sendo procurada.
#### Exemplo
voltar