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
– 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
MVC
MVC
Rails
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
Requisitos Aplicação
• 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
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
Download

Rails-09-set