Вы находитесь на странице: 1из 31

Novo Cronograma

Data Assuntos
13 de Maro Ruby on Rails I
20 de Maro Ruby on Rails II
27 de Maro
Ruby on Rails III
10 de Abril
Ruby on Rails IV
08 de Maio Ruby on Rails V
15 de Maio Checkpoint do Projeto
22 de Maio Chef, Solr e Delayed Job
27 de Maio Cdigo do Redu
12 de Junho Cdigo do Redu
19 de Junho Cdigo do Redu
Ruby on Rails 104
Tiago Lima
Lder tcnicos e Scio do Redu

8 de maio de 2014
Antes de tudo
Antes de tudo
A Documentao sua amiga
http://api.rubyonrails.org/
http://guides.rubyonrails.org/
http://rubyonrails.org/
Helper de tags
Helper de tags
Disponibilizadas pela view para gerao
de tags HTML
link_to
image_tag
form_for
...
Alguns helpers de tag
Helper de tags
<%= image_tag "header.png", size: "100x80" %>

<h1>Sprint</h1>
<ul class="stories">
<% @stories.each do |story| %>
<li>
<%= link_to "Visualizar #{story.name}",
story_path(story) %>
</li>
<% end %>
</ul>
story
<%= link_to "Visualizar #{story.name}", story %>
Conveno
Helper de tags
<% if user.online? %>
<%= link_to "#{user.name}", @user %>
<% end %>
if
unless
<% unless user.online? %>
<%= link_to "#{user.name}", @user %>
<% end %>
Helper de tags
Para formulrios:
form_for, label, text_field, text_area,
submit, ...
<%= form_for @story do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.text_area :description, :size => "60x12" %>
<%= f.submit %>
<% end %>
Helper de tags
O estado do objeto @story denir a URL
e o mtodo HTTP adequados
Instncia no salva no banco
POST /stories (criao)
Instncia salva no banco
PUT /stories (edio)
Partials
Partials
Fragmentos de view
Facilita a organizao (e manuteno)
So identicados pelo underline
_story.html.erb
<%= render 'story' %>
Partials
Sprint
_story.html.erb
_story.html.erb
_story.html.erb
_story.html.erb
_story.html.erb
<%= link_to "Visualizar #{story.name}",
story %>
app/views/stories/_story.html.erb
Para efeitos demonstrativos, o ideal que haja
mais contedo para que o uso do partial seja
justicado
View anterior com uso de partials
Partials
<%= image_tag "header.png", size: "100x80" %>

<h1>Sprint</h1>
<ul class="stories">
<% @stories.each do |story| %>
<li>
<%= render 'story', :story => story %>
</li>
<% end %>
</ul>
story
<%= render story %>
Conveno
Melhor ainda:
Partials
<%= image_tag "header.png", size: "100x80" %>

<h1>Sprint</h1>
<ul class="stories">
<%= render 'story', :collection => @stories %>
</ul>
<li><%= link_to "Visualizar #{story.name}", story %></li>
app/views/stories/_story.html.erb
Ajax
Ajax
Ajax Asynchronous JavaScript and
XML
Vrias tecnologias em conjunto
Propsito: Atravs de uma requisio
assncrona, parte da pgina atualizada sem
ser necessrio recarreg-la totalmente
Ajax
Rails possibilita que a requisio seja
assncrona atravs de um indicador:
remote: true
<%= form_for story, remote: true,
html: {id: "story_form"} do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.submit %>
<% end %>
Conveno sobre Congurao
StoriesController#create

create.js.erb
Ajax
POST /stories
Routing
create
js
Requisio feita atravs de JavaScript
JavaScript com Embedded Ruby
Ajax
A resposta contm JS, o qual modicar
a pgina
Adiciona a Story recm criada a listagem
Ajax
var $newForm = "<%= escape_javascript render 'stories/form', story: Story.new %>";
$("#story_form").replaceWith($newForm);

var $createdStory = "<%= escape_javascript render @story %>";
$(".stories").append($createdStory);
app/views/stories/create.js.erb
<h1>Sprint</h1>
<%= render "stories/form", story: @new_story %>
<ul class="stories">
<%= render partial: "stories/story", collection: @stories %>
</ul>
app/views/stories/index.html.erb
Sesso
Sesso
Guarda dados que devem ser
persistidos entre requisies
Identica o usurio
Disponvel no controlador e na view
Atravs de um objeto que herda de Hash
session
session[:current_user_id] = user.id
session[:current_user_id] = nil
Sesso
Opes armazenamento:
Tudo no cliente (default)
Banco de dados
Cache do Rails
Independente da opo escolhida, o ID
da sesso ser guardado em um cookie
(segurana)
Sesso
Congurao:
Rails102::Application.config.session_store :cookie_store,
key: '_rails-102_session'
domain: '.rails102.com.br'
config/initializers/session_store.rb
Cookies
Cookies
Guarda dados no cliente
Dados persistidos entre requisies e
sesses
Funciona similar sesso no Rails
cookies
cookies[:boring_browser] = true
cookies.delete(:boring_browser)
Pequena diferena comparado a session
Dojo
Dojo
Projeto base: https://github.com/redu/
formacao-ruby-redu/tree/master/2-
exercicio-rails-models
Dojo
Requisitos:
Link para visualizar usurio
Criar um usurio
Criar um usurio via Ajax
Obrigado. :)

Вам также может понравиться