Websites – MVC – Parte 5 – Destroy – Delete – MySQL – Ruby on Rails – Linux

Publicado: 21 de junho de 2014 em Ruby on Rails

Para excluir um registro do banco de dados através de uma pagina da web, utilizando o conceito de persistência do ActiveRecord do framework Rails, basta simplesmente utilizar a instrução destroy dentro do método do mesmo nome no controlador referenciando sua rota pelo nome do verbo delete que nos fornece a ação do controlador sobre o nome empresas#destroy, que pode ser visto usando a instrução rake route no console do Aptana.

Destroy - rake route

Destroy – rake route

Deletando um Registro

Para deletar um registro do banco de dados MySQL precisamos modificar a visão da pagina Index, criar um link de seleção e incluir o método para deletar o registro escolhido alterando o arquivo do controlador.

1 – Altere o arquivo de visão chamado index.html.erb e o arquivo do controlador chamado empresas_controller.rb utilizando os respectivos códigos abaixo:

Deletar - MVC

Deletar – MVC

Exemplo:

Neste exemplo deletamos um arquivo selecionado na pagina índice e o deletamos através da ação de seu controlador.

Arquivo – index.html.erb

<h2>Desenvolvimento Aberto</h2>
<p>Lista de Blogs e Projetos Open Source</p>
<pre>
<table width="500">
<tr>
	<th>Cod:</th>
	<th>&nbsp;&nbsp;</th>
	<th>Empresa:</th>
	<th>&nbsp;&nbsp;</th>
	<th>Site:</th>
	<th>&nbsp;&nbsp;</th>
	<th>Evento:</th>
	<th>&nbsp;&nbsp;</th>
	<th>Excluir:</th>
</tr>
<% @empresas.each do |empresa| %>

<tr>
<td><%= empresa.codigo%> </td>
<td>&nbsp;&nbsp;</td>
<td><%= link_to empresa.nome, empresa %> </td>
<td>&nbsp;&nbsp;</td>
<td><%= empresa.site%> </td>
<td>&nbsp;&nbsp;</td>
<td><%= link_to "Editar", edit_empresa_path(empresa) %> </td>
<td>&nbsp;&nbsp;</td>
<td><%= link_to "Deletar", empresa, :confirm => "Deseja apagar o registro?", :method => :delete  %> </td>

</tr>

<%end%>
</table>

<p> <%= link_to "Adicionar um novo registro", new_empresa_path %> </p>
</pre>

Arquivo – empresas_controller.rb

class EmpresasController < ApplicationController

  def index
    @empresas = Empresa.all
  end

  def show
    @empresa = Empresa.find(params[:id])
  end

  def new
    @empresa = Empresa.new
  end

  def create
    @empresa = Empresa.new(empresa_params)
    if @empresa.save
      redirect_to empresas_path :notice => "Seu registro foi criado com sucesso"
    else
      render "new"
    end
  end

  def edit
    @empresa = Empresa.find(params[:id])
  end

  def update
    @empresa = Empresa.find(params[:id])

    if @empresa.update_attributes(empresa_params)
      redirect_to empresas_path :notice => "Seu registro foi criado com sucesso"
    else
      render "edit"
    end
  end

  def destroy
    @empresa = Empresa.find(params[:id])
    @empresa.destroy
    redirect_to empresas_path :notice => "Seu registro foi deletado com sucesso"
  end

  private

  def empresa_params
    params.require(:empresa).permit(:codigo, :nome, :site, :projeto, :tipo, :linguagem, :descricao)
  end

end

 

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s