Formação Ruby & Redu :: Ruby on Rails

  • Published on
    28-Dec-2015

  • View
    40

  • Download
    0

Embed Size (px)

DESCRIPTION

Helper de Tags, Partials, Ajax, Sesso e Cookies.

Transcript

  • Novo Cronograma

    Data Assuntos13 de Maro Ruby on Rails I

    20 de Maro Ruby on Rails II27 de Maro! Ruby on Rails III10 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

    !!Sprint!! ! ! ! ! !

    story

    Conveno

  • Helper de tags

    ! !

    if unless

    ! !

  • Helper de tags

    Para formulrios:

    form_for, label, text_field, text_area, submit, ...

    ! ! ! "60x12" %>! !

  • Helper de tags

    O estado do objeto @story definir 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 identificados pelo underline

    _story.html.erb

  • Partials

    Sprint

    _story.html.erb_story.html.erb_story.html.erb_story.html.erb

    _story.html.erb

    app/views/stories/_story.html.erb

    Para efeitos demonstrativos, o ideal que haja mais contedo para que o uso do partial seja

    justificado

  • View anterior com uso de partials

    Partials

    !!Sprint!! ! ! story %>! ! !

    story

    Conveno

  • Melhor ainda:

    Partials

    !!Sprint!! @stories %>!

    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

    ! ! ! !

  • Conveno sobre Configurao

    StoriesController#create

    !

    create.js.erb

    Ajax

    POST /storiesRouting

    create

    js

    Requisio feita atravs de JavaScript

    JavaScript com Embedded Ruby

  • Ajax

    A resposta contm JS, o qual modificar a pgina

    Adiciona a Story recm criada a listagem

  • Ajax

    var $newForm = "";!$("#story_form").replaceWith($newForm);!!var $createdStory = "";!$(".stories").append($createdStory);

    app/views/stories/create.js.erb

    Sprint!!! !

    app/views/stories/index.html.erb

  • Sesso

  • Sesso

    Guarda dados que devem ser persistidos entre requisies

    Identifica 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

    Configurao:

    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. :)