Cadastro com Upload de Imagem
|
|
Olá pessoal, De uns tempos para cá venho tendo muita vontade de escrever pequenos tutorias para quem está iniciando em rails, no começo eu tive muita dificuldade com rails devido ele ser simples demais, não me entrava na cabeça como ele funcionava. Como já falei quero escrever tutoriais, mas tenho um grande problema, não tenho blog, site ou algo do tipo, também não quero ficar na responsabilidade de ficar atualizando um blog periodicamente e não quero que os colegas tenham a mesma peleja que eu tive por falta de pequenos tutoriais na época, então vou aproveitar este espaço do RubyOnBr para escrever meus pequenos tutorias, passar o conhecimento, me tornar um melhor programador além de virar uma pessoa mais feliz. É ensinando que realmente aprende =).Já tem um tempo que escrevi um tutorial sobre instalação do ambiente de desenvolvimento rails no ubuntu(http://forum.rubyonbr.org/forums/5/topics/3486), parto do pressuposto que todos já tem tudo funfando direitinho(ruby, RoR, mysql). Bem agora vamos meter a mão na massa. Começando: Vamos começar abrindo um console do ubuntu: Vamos agora criar um novo projeto no rails: Deste modo criei o meu projeto rails chamado funcionarios, com o banco de dados mysql. Agora vamos criar nossa base de dados no mysql, no console do ubuntu digite: Com este comando vamos abrir o mysql em linha de comando, no meu caso eu deixo mesmo o nome_do_usuario como root pois sou muito esquecido. =) Vai aparecer: Your MySQL connection id is 14 Server version: 5.0.51a-3ubuntu5.1 (Ubuntu) Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer. mysql> Com esta tela você já pode criar databases, tabelas, fazer consultas e o escambal no mysql. Agora vamos criar nossa database: Agora já temos um projeto rails e um banco de dados funcionando, vamos entrar no diretório do nosso projeto:Dentro do diretório do nosso projeto vamos checar se nosso arquivo de configurações de acesso ao banco de dados esta corretamente configurado, abra o arquivo config/database.yml. Veja só que moleza(mais fácil que sentar no pudim) o rails providenciou tudo para você, apenas teve que colocar seu login do mysql e a respectiva senha. Com tudo funcionando vamos agora instalar o plugin responsável pelo upload de arquivos no rails, afinal não queremos nem ter trabalho e nem reinventar a roda, vamos ser DRY!!! Com tudo isso feito já podemos começar a criar nossa estrutura de cadastro, primeiro vamos criar a tabela com tudo necessário(tabela e crud feito com o scaffold):Calma vamos ver antes de prosseguir tudo que criamos: Agora todo o resto são os campos da minha tabela Ate agora os campos acima são apenas campos de cadastro(coloquei so para não termos apenas uma imagem), vamos agora ver os outros campos que são configurações para o upload de imagens: Depois de criado tudo isto vamos fazer algumas configurações no nosso model(app/model/ app/models/cadastro.rb) has_attachment :content_type=>:image, :storage=> :file_system, :max_size=>1000.kilobytes, :rezise_to=>’120x150’, :thumbnails=>{:thumb=>’60x75’} validates_as_attachmentendEsta é a copia como ficou o meu, só colocamos as configurações de entrada do arquivo e validamos as mesmas. Vou descrever uma por uma: :content_type=> :image – configurando nosso arquivo upado para ser uma imagem. :storage=> :file_system – Vai ser onde as imagens vão ser armazenadas, fazendo isso elas vão ficar no diretorio public/funcionarios, poderiamos ter usado tambem :db_file para salvar no banco de dados, mas acho que pessoalmente o banco pode ficar muito sobrecarregado, ou poderias usar :s3, este eu nem sei direito mas pode ter informações em http://en.wikipedia.org/wiki/Amazon_S3 e em :max_size=>1000.kilobytes – O tamanho máximo do arquivo :rezise_to=>’120x150’ – Vai redimensionar a imagem para 120×150(mais ou menos uma 3por 4 hehe) :thumbnails=>{:thumb=>’60x75’}, cria o thumbnail no tamanho 60×75 O Depois disto tudo feito vamos criar as tabelas no nosso banco de dados: Oba nosso Cadastro esta criado com direito a upload de imagens e tudo Vamos agora ver se funcionou, primeiro startar o servidor Ué!!! cadê nosso cadastro? Só da para ver a pagina inicial da aplicação rails. vamos procurar uma linha que tem assim: Com isso quando for chamado no browser http://localhost:3000, ele vai encarar nosso controller cadastros como o controller inicial da aplicação. Pronto vamos iniciar novamente o servidor(script/server) e acessar htt://localhost:3000 no browser. New cadastro<% form_for(@cadastro, :html => {:multipart => true}) do |f| %> <%= f.error_messages %>
<%= f.label :nome %>
<%= f.label :idade %>
<%= f.label :funcao %>
<%= f.label :uploaded_data %> <%= f.submit "Create" %> <% end %> <%= link_to 'Back', cadastros_path %>O que eu fiz ai foi apenas adicionar o , :html => {:multipart => true} dentro do form_for, para permitir que a pagina html possa carregar arquivos.Troquei todos os labels e inputs baixo dos campos de funcao por: Temos agora que fazer algo no arquivo app/views/cadastros/show.html.erb
Imagem Nome: <%=h @cadastro.nome %> Idade: <%=h @cadastro.idade %> Funcao: <%=h @cadastro.funcao %> <%= link_to 'Edit', edit_cadastro_path(@cadastro) %> | <%= link_to 'Back', cadastros_path %>Como no arquivo new, apaguei apenas os campos que não vamos precisar mostrar e adicionei no começo do arquivo image_tag(@cadastro.public_filename()). Com isto já podemos cadastrar a imagem e já vamos ver ela após salvar(Eba finalmente). Bem pessoal ainda falta a app/views/cadastros/edit.html.erb , mas esta parte vou deixar por conta de vocês, ate mesmo para treinar(mentira estou é com preguiça). Eu já ia me esquecendo, eu sempre tento ter a menor quantidade de campos possível no app/views/cadastros/index.html.erb, vai la e apaga tudo que for desnecessário para ter na pagina inicial, se o camarada quiser clica no botão show e olha os detalhes =)
<%= link_to ‘New cadastro’, new_cadastro_path %> Pronto, vou terminando por aqui, mostrei como utilizar o plugin para salvar arquivos de imagem, mas a partir daí você pode usar a logica e criatividade para trabalhar com upload de imagens ou arquivos. Um sisteminha que sugiro para treinar isso é um cadastro de currículos, ou um fotolog. Espero que este pequeno tutorial possa ser útil, eu tenho certeza que para mim vai pois sou esquecido demais =). Para quem tem interesse estamos organizando o primeiro CearáOnRails(http://www.cearaonrails.org) vai ser um bom evento sobre rails no estado do Ceará. Espero poder fazer outro pequeno tutorial, qualquer sugestão ou duvida não só pode como deve me mandar um e-mail no endereço: rafarubert@yahoo.com.br. Boa sorte a todos e um bom desenvolvimento. |
|||||||
|
|
mais uma vez, por favor ignorem algumas tags /p malucas que aparecem no meio do codigo, comigo sempre aparecem eles =(. |
|||||||


