300 likes | 379 Views
Desenvolvimento Web. Hipertexto. Texto em formato digital Acesso por meio de hiperlinks Interconecta conjunto de informação Sistema baseado em Hipertexto mais conhecido World Wide Web. Cliente-Servidor. Clientes Enviam requisições para servidores e aguarda por resposta Servidores
E N D
Hipertexto • Texto em formato digital • Acesso por meio de hiperlinks • Interconecta conjunto de informação • Sistema baseado em Hipertexto mais conhecido World Wide Web
Cliente-Servidor • Clientes • Enviam requisições para servidores e aguarda por resposta • Servidores • Oferecem algum serviço, processam a requisição e retornam o resultado
HTTP • HyperText Transfer Protocol • Protocolo responsável pelo tratamento de pedidos e respostas entre cliente e servidor na WWW • Dados são codificados e encapsulados no corpo da mensagem e enviados ao servidor • Text/plain, text/gif, text/jpeg, etc.. • Métodos • GET • POST (Exemplo)
MVC • Princípio que divide/estrutura a aplicação em três entidades distintas que interagem entre si • Separação: • Dados e Lógica de negócio (Model) • Layout / Visualização(View) • Controller • Intermedia Model e View
MVC • Model • Representa as entidades do domínio da aplicação • View • Interface de usuário • Visualização dos dados • Controller • Processa eventos disparados pelos usuários • Recebe requisição do usuário
O que é? • Meta-Framework/Framework cujo foco é desenvolvimento de aplicações web • Estrutura base das aplicações segue MVC • Linguagem utilizada Ruby
Objetivo • Introdução Rails • Desenvolver ao longo da aula o exemplo que promete construir um blog em 15 minutos
Dono do blog cria post lê, modifica, apaga posts lê, apaga comentários de outros usuários Usuário lê posts de um blog cria comentário para um post lê comentários, apaga seus próprios comentários Requisitos Aplicação
Iniciando • % rails blog • Comando rails gera esqueleto da aplicação • Estrutura da aplicação • app: componentes (controllers/views/model) • config: database.yml • public: arquivos css, javascript, imagens, uploads • Levantando a aplicação (localhost:3000) • % script/server
Criando Primeira Tabela • % script/generate model post • generate: script para gerar estrutura • model: indica tipo da estrutura • post: nome do objeto • Pasta db/migrate: • self.up => fazer alterações • sef.down => desfazer alteração
Criando Primeira Tabela • self.up create_table :posts do |t| t.string :title t.string:body t.timestamps end • self.down drop_table : posts
Criando Primeira Tabela • % rake db:migrate • rake: similar ao MakeFile • Aplica a migração no banco de dados
Criando Primeira Tabela • script/console • Post.create(:title=>’teste’, :body=>’teste’) • Post.find(:all) • P = Post.find(1) • P.destroy
Criando Primeiro Controller • % script/generate controller posts • Testando: • localhost:3000/posts • Em app\controllers\posts_controller.rb def index end • Tentando novamente
Criando Primeiro Controller • app\views\posts\index.rhtml <h1>Listando Posts</h1> <table> <tr> <th>Titulo</th> <th>Conteudo</th> </tr> </table> • Tentando novamente
Criando Primeiro Controller • Listando Posts def index @posts = Post.find(:all) End • Na view index.rhtml – Iterando <% @posts.each do |p| %> <tr><td><%=p.title%></td> <td><%=p.body%></td> </tr> <% end %></table>
Criando Posts • Adicionando links <p> <%= link_to “Nova Postagem", :action => “new” %> </p> • Clicando no link …. • Deve-se registrar action new, assim como new.rhtml
Criando Posts • Criando o formulário: <% form_tag :action => 'create' do%> Titulo: <%= text_field :post,:title%><br /> Mensagem: <%= text_field :post, :body%><br /> <%= submit_tag 'Criar'%> <% end %> <%= link_to 'Voltar', :action => ‘index’ %>
Criando Posts • Criando create: def create post = Post.new post.attributes = params[:post] post.save redirect_to :action => 'index' end
Editando Posts • Inserindo link para editar: <td><%= link_to "Editar", :action => "edit", :id => p.id %></td> • Inserindo action edit: @post = Post.find(params[:id])
Editando Posts • Criando View de edição: <% form_tag :id => @post, :action => 'update' do%> Titulo: <%= text_field :post,:title%><br /> Mensagem: <%= text_field :post,:body%><br /> <%= submit_tag 'Salvar'%> <% end %>
Editando Posts • Definindo action update: def update @post = Post.find(params[:id]) @post.attributes = params[:post] @post.save redirect_to :action => 'index' end
Situação atual • Temos um blog com funcionalidades de listar, inserir e editar um post. • Pode-se ver o quão produtivo é se trabalhar com Rails
Exercício • Implementar os requisitos que não foram finalizados – Slides 12 • Atividade em Dupla • Sem uso de scaffold • Pesquisar sobre registrar o usuário logado na sessão, relacionamentos entre entidades no Rails • Utilizar Sqlite3 • Reflita sobre as entidades e relacionamentos entre elas
Referências • Tutorial: “Rails para sua diversão e lucro” • http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html • Vídeo de Terceiro sobre Rails - Lab. Eng. Software • http://app.dcc.ufba.br/~terceiro/matb14/
Equipes • Leandro e Ivan • Roberto e Jandson • Paulo e Paulo • Lorena e Manuel • Leonardo e Matheus • Caíque e Ademilson • Adnilson e Fabrício • Ítalo e Arleson • Fagner e Naíla • Felipe e Joás