Ruby on Rails: Implementando AutoFill com Jquery




Olá pessoal, hoje vou compartilhar um método que pode ser bobo para usuários avançados mais acho interessante por quase não existir material na internet.
Precisei desenvolver esse script para implementar uma função autofill em um sistema que desenvolvo para UENF (Universidade Estadual Norte Fluminense).

Todo mundo já usou sites com preenchimento automatico de campos.
Exemplo clássico deste recurso é quando se coloca o CEP em um formulário de endereço, e os campos contendo rua, bairro, cidade, são automaticamente preenchidos (AutoFill).

Neste exemplo uso a biblioteca JavaScript Jquery.

Vamos lá:

Criando uma aplicação teste em Ruby on Rails

Começamos criando uma aplicação "teste" para implementar o autofill.

$ rails autofill -d postgresql


* perceba que eu uso o postgresql como banco de dados, use o banco que esteja acostumado

Feito isso vamos geral um scaffold rapidamente.

$ cd autofill
$ script/generate scaffold Cadastro nome:string telefone:string email:string


Criar banco de dados e rodar a migração
Abra o arquivo config/database.yml e altere os dados de login do seu banco de dados.
Depois disso execute os comandos:

$ rake db:create
$ rake db:migrate


Com essa parte pronta podemos começar a implementar.

Abrindo a view new.html.erb (apps/views/cadastros/new.html.erb)
Insira o trecho abaixo antes da tag <% form_for(@cadastro) do |f| %>

Trecho:
<button id="autofill" name="autofill">Autofill?</button>
<div id="pegardados_autofill" style="display: none;">

<br>ID: <input id="id_autofill" name="id_autofill"> </input>
<button id="load_autofill" name="load_autofill">carregar</button>
</div>
<div id="msg_autofill" style="display: none;">
</div>

Screenshot:


Ajustando o controller (apps/controllers/cadastros_controller.rb)
Como este é apenas um exemplo e normalmente em exemplos temos que simular uma fonte de dados para fazer o autofill, vamos pegar dados do próprio cadastro, integrando com JSON.
Muito simples.

No controller ative o formato JSON no método show:

def show
@cadastro = Cadastro.find(params[:id])

respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @cadastro }
format.json { render :json => @cadastro } // ADICIONE ESTA LINHA
end
end


Baixando Jquery e criando o arquivo autofill.js

Se você não tem jquery em sua aplicação faça isto:
Baixe o arquivo jquery-1.3.2.js e coloque na pasta da sua aplicação rails
$ mv jquery-1.3.2.js /pathdasuaaplicação/public/javascripts/jquery-1.3.2.js


Crie dentro desta mesma pasta (../public/javascripts/) um arquivo com nome autofill.js e coloque o seguinte conteudo:

$(function(){ // FUNÇÃO PARA EXIBIR A DIV
$("#autofill")
.click(function(){
$("#pegardados_autofill").show(1300);

});
});

$(function(){
$("#load_autofill")
.click(function(){
var id = $('#id_autofill').val();
if(id == ""){
alert("Campo em branco, coloque o id.")
}
$.getJSON("http://localhost:3000/cadastros/" + id + ".json", function(data){ //pegando dados via JSON

$('#cadastro_nome').val(data.cadastro.nome);// completando os campos
$('#cadastro_telefone').val(data.cadastro.local);
$('#cadastro_email').val(data.cadastro.preco);

$("#msg_autofill").html("Dados carregados com sucesso..");

$("#msg_autofill").show(1100);
$("#msg_autofill").fadeOut(1800);

});
});
})


Finalizando
Seguindo todos esses passos, resta somente colocar a biblioteca no arquivo new.html.erb e o autofill.js

Abra new.html.erb e adicione antes da tag <h1>....</h1>

<%= javascript_include_tag 'jquery' %>
<%= javascript_include_tag 'autofill' %>


Salve e rode o servidor

$ script/server


Testando

Como não temos nenhum cadastro, consequentemente não temos da onde efetuar o autofill.
Efetue um cadastro então:
http://localhost:3000/cadastros/new

Não clique no botão AutoFill? por enquanto, apenas preencha os campos com nome telefone e email.
Com o cadastro efetuado já temos o primeiro ID para testar o auto fill.

Retorne ao endereço http://localhost:3000/cadastros/new e agora sim clique no botão Autofill?
Uma div com efeito deverá surgir e no campos ID: coloque o id 1 , clique em carregar e veja o resultado!



Com esse exemplo acho que da para adaptar em qualquer situação.
depois posto a função usando XML como padrão de dados.

Até! Leia Mais!

Livros: Startup + A cabeça de Steve Jobs


Olá pessoal, agradeço muito as visitas que o blog JCMaciel.com teve nos últimos dias.

Post rápido hoje.


Recentemente adquiri um box contento dois livro, Startup e A cabeça de Steve Jobs, da editora Agir, em uma excelente promoção do submarino.

Comecei a ler primeiro o Startup, um livro que conta a história das principais startup's do vale do silício em formato de entrevista.
Como tenho certa aptidão pelo lado do empreendedorismo, sou suspeito de falar sobre o livro.

Uma leitura não direcionada somente para o lado dos negócios como também para tecnologia. Você que é da área de T.I, ou qualquer outra área e tem vontade de entender como surgiram as ideias e que nem tudo são flores quando se começa um projeto de sucesso, está obra é extremamente recomendada.

Agora, vou iniciar a leitura da obra, A cabeça de Steve Jobs, uma biografia que mostra o trajeto de sucesso do empresário Steve Jobs, co-fundador da Apple.
Mais para frente farei uma resenha sobre ele quando acabar a leitura :-)

Edit¹: Se você leu o "Startup" e gostou, leia a versão original em inglês, "Founders at Work". Neste exemplar existem entrevistas não publicadas na versão em pt-BR.
Dica via twitter do @dvdoliveira

Link para o produto
Leia Mais!

Ambiente de Desenvolvimento Rails: Gedit + Gmate


Fala pessoal!!
Como todo programador Rails desmonetizado sonha em usar o Textmate (eu) trago uma solução bem fácil e extremamente explicada: um plugin para Gedit que aproxima-o do Textmate, o Gmate.
Com ele seu Gedit terá:
  • Console Embutido com possibilidade de varios terminais
  • Navegador de arquivos
  • Rails Hot Commands
  • Rails Hot Keys
  • Snapopen - abre arquivos rapidamente alá Textmate
  • TodoList
  • Bookmarks
  • Autocompletation
  • Syntax Highlight
  • E mais que eu posso estar esquecendo (#badblock)

Preview:


Instalação

$ sudo apt-get install gedit-plugins
Instalar gmate

$ git clone git://github.com/lexrupy/gmate.git

se aparecer git: command not found digite:

$ sudo apt-get install git-core
Extra:
Se você não tiver o git e não quiser instalar (programador rails geralmente precisa do git :] ) baixe o .deb http://cloud.github.com/downloads/lexrupy/gmate/gedit-gmate_0.9-ubuntu1_all.deb (somente para distros baseadas no debian) / baixe o tar.gz e descompacte http://juquinhaa.googlepages.com/gmate.taz.gz

# sanar as dependencias com esse comando:
$ sudo apt-get install python-pyinotify python-webkitgtk
# entre no diretorio
$ cd gmate
# instale
$ sh install.sh

Baixando o mterminal (Terminal embutido)
http://fazibear.googlepages.com/mterminal.tar.gz
Descompacte e copie os arquivos para a pasta /usr/lib/gedit-2/plugins/

Ativando e Configurando

Abra o Gedit e vá em Editar>Preferências>Plug-ins
Marque:
  • Advanced Bookmarks
  • Align
  • Auto Completation Plugin
  • Embedded Terminal
  • Gemini
  • HTML Tidy
  • Painel do navegador de arquivos
  • Quick Highlight Mode
  • Rails Extract partial
  • Rails File Loader
  • Rails Hot Commands
  • Rails HotKeys
  • Smart Ident
  • Snap open
  • TODO List
  • Trechos
  • Word completion

na aba Fontes e Cores escolha um tema que mais lhe agradar visualmente.

Para ativar o terminal aperte CTRL + F9
Para ativar o painel de navegação de arquivos use F9

Breve resumo das funcionalidades

Snap Open
Uso: CTRL + ALT + O
Abre arquivos rapidamente.
Rails HotKeys
Uso: CTRL + SHIFT + R e aperte logo em seguida F1. A lista com todos os comandos se abrirá.
CTRL + SHIFT + R e logo em seguida N abre o browser com endereço: http://localhost:3000/
Rails Hot Commands
Uso: CTRL + ALT + C e digite script. Logo abaixo uma lista vai aparecer contendo os comandos disponiveis.
Digite algum comando para executar rapidamente.
TODO List
Uso: CTRL + ALT + T abre uma janela contendo as tarefas a serem efetuadas, completas e etc.
Para usar basta em algum arquivo do projeto comentar assim:
Ex:
#TODO: lembrar aqui de implementar uma função tal.
Esse arquivo será listado na janela dos afazeres (CTRL + ALT + T)
Links:

Boa produtividade!
Até! Leia Mais!

Começando a programar: Ruby on Rails


Olá, interrompendo a seção de erros (afinal, as férias extendidas pela gripe suína servem para diminuir os erros encontrados :P), vou listar a seguir alguns tutoriais, link's da comunidade RoR (1º passo - acostume-se com o RoR, Ruby on Rails) e alguns pdfs que encontrei por ai!
Se você está lendo algo sobre RoR pela primeira vez aqui no blog certamente vai ler artigos onde todos indicam começar estudando a linguagem Ruby. Esse estudo é indicado digamos na segunda parte da programação com RoR, pois é nela que você pode precisar de coisas específicas e ai não tem jeito de usar automatizadores de códigos (scaffolds). Chega de papo, mas lembre-se de não sair por ai falando que está programando em uma linguagem nova "Ruby on Rails", pois Ruby é a linguagem e Rails é o framework utilizado!

Sobre o Ruby
Sobre o Rails
Livros
Blogs

Isso é um bom começo para iniciar no mundo RoR. Erros? Procure no blog!
Se você tem algum link e queira compartilhar, poste no comentário que eu junto na lista. Leia Mais!