Slide 1

Slide 1 text

Desenvolvimento Web com Ruby on Rails João Lucas Pereira de Santana gtalk | linkedin | twitter: jlucasps

Slide 2

Slide 2 text

Resources Resources são objetos que os usuários estão aptos a acessar e realizar operações CRUD (ou um conjunto delas) Controllers de objetos Resources são implementados utilizando-se os métodos (GET, PUT, POST) defindidos no protocolo HTTP @jlucasps resources :messages namespace "admin" do resources :posts, :comments # app/controllers/admin/posts end resources :magazines do resources :ads end

Slide 3

Slide 3 text

Resources @jlucasps class MessagesController < ActionController::Base # GET messages_url def index # return all messages end # GET new_message_url def new # return an HTML form for describing a new message end # POST messages_url def create # create a new message end # GET message_url(:id => 1) def show # find and return a specific message end # GET edit_message_url(:id => 1) def edit # return an HTML form for editing a specific message end # PUT message_url(:id => 1) def update # find and update a specific message end # DELETE message_url(:id => 1) def destroy # delete a specific message end end

Slide 4

Slide 4 text

Resources @jlucasps messages GET /messages(.:format) messages#index POST /messages(.:format) messages#create new_message GET /messages/new(.:format) messages#new edit_message GET /messages/:id/edit(.:format) messages#edit message GET /messages/:id(.:format) messages#show PUT /messages/:id(.:format) messages#update DELETE /messages/:id(.:format) messages#destroy

Slide 5

Slide 5 text

Resources Alterar tela index.html.erb para conter link para listagem de usuários @jlucasps
<% label = " Usuários". html_safe %> <%= link_to label, users_path, :class => "btn btn-large" % >
<%= content_for :sidebar do %> <%= render :partial => 'shared/sidebar' %> <% end %>

Slide 6

Slide 6 text

Resources Criar tela de listagem de usuários em /app/views/users/index.html.erb @jlucasps <% if @users.any? %> <% # Listagem de usuários %> <% else %>
Nenhum usuário cadastrado
<% end %> <%= link_to "Novo usuário", new_user_path, :class => "btn btn-success" %>

Slide 7

Slide 7 text

Resources Criar controller de usuários em /app/controllers/users_controller.rb @jlucasps class UsersController < ApplicationController def index @users = User.all end end

Slide 8

Slide 8 text

Resources Tela de listagem de usuários @jlucasps

Slide 9

Slide 9 text

Criar a action new para exibir formulário Resources @jlucasps class UsersController < ApplicationController def index @users = User.all end def new @user = User.new end end

Novo usuário

<%= render :partial => 'form', :locals => {:user => @user} %>

Slide 10

Slide 10 text

Resources @jlucasps /app/views/shared/_error_messages.html.erb <% if resource.errors.any? %>

<%= pluralize(resource.errors.count, "error") %> erros:

    <% resource.errors.full_messages.each do |msg| %>
  • <%= msg %>
  • <% end %>
<% end %>

Slide 11

Slide 11 text

Resources Partial com formulário em /app/views/users/_form.html.erb @jlucasps <%= form_for(user) do |f| %> <%= render :partial => 'shared/error_messages', :locals => {:resource => user} % >
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :email %>
<%= f.text_field :email %>
<%= f.label :age %>
<%= f.number_field :age %>
<%= f.label :gender %>
<%= f.number_field :gender %>
<%= f.submit :class => "btn btn-primary" %> <%= link_to "Voltar", users_path, :class => "btn" %>
<% end %>

Slide 12

Slide 12 text

Resources Formulário de novo usuário @jlucasps

Slide 13

Slide 13 text

Resources Implementar action create @jlucasps def create @user = User.new(params[:user]) if @user.save flash[:notice] = "Usuário criado" redirect_to user_path(@user) else render :action => :new end end

Slide 14

Slide 14 text

Resources Implementar a action e view show @jlucasps

<%= notice %>

Nome:<%= @user.name %>

email:<%= @user.email %>

Idade:<%= @user.age %>

Sexo:<%= @user.gender %>

<%= link_to 'Edit', edit_user_path(@user), :class => "btn" %> | <%= link_to 'Back', users_path, :class => "btn" %> def show @user = User.find(params[:id]) end

Slide 15

Slide 15 text

Resources Tela de exibição de usuários @jlucasps

Slide 16

Slide 16 text

Resources Completar tela de listagem @jlucasps <% if @users.any? %> <% @users.each do |user| %> <% end %> <%= "#{user.name} (#{user.email}), #{user.age} anos" %> <%= link_to "".html_safe, edit_user_path(user), :class => "btn btn-mini" %> <%= link_to "".html_safe, user, :method => :delete, : class => "btn btn-mini" %> <% else %>
Nenhum usuário cadastrado
<% end %> <%= link_to "Novo usuário", new_user_path, :class => "btn btn-success" %>

Slide 17

Slide 17 text

Resources @jlucasps

Slide 18

Slide 18 text

Resources Implementar actions de edit e update @jlucasps

Editar usuário

<%= render :partial => 'form', :locals => {:user => @user} %> /app/views/users/edit.html.erb def edit @user = User.find(params[:id]) end def update @user = User.find(params[:id]) if @user.update_attributes(params[:user]) flash[:notice] = "Usuario modificado" redirect_to user_path(@user) else render :action => :edit end end

Slide 19

Slide 19 text

Resources Action destroy @jlucasps def destroy @user = User.find(params[:id]) flash[:notice] = (@user.destroy ? "Usuario deletado" : "Falha na remocao") redirect_to users_path end

Slide 20

Slide 20 text

Resources Listagem final de usuários @jlucasps

Slide 21

Slide 21 text

Desenvolvimento Web com Ruby on Rails João Lucas Pereira de Santana gtalk | linkedin | twitter: jlucasps Obrigado!