SlideShare una empresa de Scribd logo
2ª Parte



Javier Cuevas - Diacode.com
Menú del día

• Repaso a generadores y aclaraciones sobre
  Scaffolding
• AJAX con Rails
• Autentificación de usuarios con Devise
• Resolución del ejercicio propuesto
Repaso a generadores y
  aclaraciones sobre
      Scaffolding
Para tener un CRUD de un
   modelo necesitamos:
• Modelo
• Controlador
• Vistas
• Tabla en la base de datos (migración)
• Rutas configuradas (routes.rb)
Para tener un CRUD de un
   modelo necesitamos:
• Modelo                    Todo esto nos
                               lo ofrece
• Controlador                 el scaffold
• Vistas
• Tabla en la base de datos (migración)
• Rutas configuradas (routes.rb)
El Scaffold además...
rails g scaffold Task   invoke   active_record
                        create     db/migrate/20120224135839_create_tasks.rb
name:string             create     app/models/task.rb
description:text        invoke     test_unit
priority:integer        create        test/unit/task_test.rb
                        create        test/fixtures/tasks.yml
due_to:date              route   resources :tasks
done:boolean            invoke   scaffold_controller
                        create     app/controllers/tasks_controller.rb
category:references     invoke     erb
                        create        app/views/tasks
                        create        app/views/tasks/index.html.erb
                        create        app/views/tasks/edit.html.erb
                        create        app/views/tasks/show.html.erb
                        create        app/views/tasks/new.html.erb
                        create        app/views/tasks/_form.html.erb
                        invoke     test_unit
                        create        test/functional/tasks_controller_test.rb
                        invoke     helper
                        create        app/helpers/tasks_helper.rb
                        invoke        test_unit
                        create          test/unit/helpers/tasks_helper_test.rb
                        invoke   assets
                        invoke     coffee
                        create        app/assets/javascripts/tasks.js.coffee
                        invoke     scss
                        create        app/assets/stylesheets/tasks.css.scss
                        invoke   scss
                        create     app/assets/stylesheets/scaffolds.css.scss
El Scaffold además...
rails g scaffold Task   invoke   active_record
                        create     db/migrate/20120224135839_create_tasks.rb
name:string             create     app/models/task.rb
description:text        invoke     test_unit
priority:integer        create        test/unit/task_test.rb
                        create        test/fixtures/tasks.yml
due_to:date              route   resources :tasks
done:boolean            invoke   scaffold_controller
                        create     app/controllers/tasks_controller.rb
category:references     invoke     erb
                        create        app/views/tasks
                        create        app/views/tasks/index.html.erb

    Genera              create
                        create
                        create
                                      app/views/tasks/edit.html.erb
                                      app/views/tasks/show.html.erb
                                      app/views/tasks/new.html.erb

 CSS (SCSS),            create
                        invoke
                        create
                                      app/views/tasks/_form.html.erb
                                   test_unit
                                      test/functional/tasks_controller_test.rb

  Javascript            invoke
                        create
                        invoke
                                   helper
                                      app/helpers/tasks_helper.rb
                                      test_unit

   (Coffee),            create
                        invoke
                        invoke
                                 assets
                                        test/unit/helpers/tasks_helper_test.rb

                                   coffee

 Helpers, y             create
                        invoke
                        create
                                      app/assets/javascripts/tasks.js.coffee
                                   scss
                                      app/assets/stylesheets/tasks.css.scss

     Tests              invoke
                        create
                                 scss
                                   app/assets/stylesheets/scaffolds.css.scss
El Scaffold NO hace...
• No incluye selects para relacionar modelos
  en los formularios que crea.
• Si hiciste scaffold, y posteriormente incluyes
  un campo nuevo a la tabla de tu modelo, las
  vistas no se actualizan solas: tendrás que
  actualizarlas tú.
• Si añades nuevas acciones a tu controlador,
  tendrás que incluirlas en el routes.rb. El
  scaffold solo define rutas para el CRUD.
Montando un CRUD
        SIN Scaffold
•   Modelo y Tabla (migración)
    rails g model User name:string
    rake db:migrate


•   Modelo sin Tabla (migración)
    rails g model User name:string --migrations false


•   Controlador
    rails g controller User
    tip:   rails g controller --help



•   Tendremos que añadir las acciones CRUD (index, show,
    edit, create, update, destroy) al controlador a mano

•   Las vistas las creamos a mano desde nuestro editor

•   Tendremos que editar el routes.rb y añadir rutas CRUD
    (resources :users) o rutas propias
AJAX
con Rails
Algunas notas sobre
      Rails y Javascript
• Rails es Javascript framework agnostic, es
  decir, que puede integrarse tanto con jQuery
  como con Prototype, etc.
• Para integrar Rails con cada framework se
  usan “adaptadores”.
• Por defecto Rails añade al Gemfile el
  adaptador jquery-rails. Es decir: sin hacer
  nada, podemos empezar a usar jQuery.
Generar petición AJAX
      con Rails
<%= link_to 'Destroy', task, confirm: 'Are you sure?',
method: :delete, :remote => true %>



  <%= form_for(@task, :remote => true) do |f| %>
Generar petición AJAX
      con Rails
<%= link_to 'Destroy', task, confirm: 'Are you sure?',
method: :delete, :remote => true %>



  <%= form_for(@task, :remote => true) do |f| %>


           Por defecto estas
          peticiones esperan
            recibir código
               Javascript
¿Qué debe devolver la
   petición AJAX?
• Una petición AJAX puede devolver
  diferentes tipos de datos:
  • Código Javascript
  • JSON
  • JSONP (llamada a función JS + datos JSON)
  • Texto
  • HTML
¿Qué debe devolver la
   petición AJAX?
• Una petición AJAX puede devolver
  diferentes tipos de datos:
  • Código Javascript          Normalmente
                                usaremos
  • JSON                        estos dos
  • JSONP (llamada a función JS + datos JSON)
  • Texto
  • HTML
Javascript VS JSON
Javascript VS JSON
•   Devolver Javascript
Javascript VS JSON
• Devolver Javascript
• A cada petición AJAXbloque de
  contestamos con un
   código Javascript, resultante de
   interpretar un archivo .js.erb
Javascript VS JSON
• Devolver Javascript
• A cada petición AJAXbloque de
  contestamos con un
    código Javascript, resultante de
    interpretar un archivo .js.erb
•   Los archivos .js.erb mezclan JS y
    Ruby.
Javascript VS JSON
• Devolver Javascript
• A cada petición AJAXbloque de
  contestamos con un
   código Javascript, resultante de
   interpretar un archivo .js.erb
•  Los archivos .js.erb mezclan JS y
   Ruby.
• Se almacenan en la carpeta
  app/views
Javascript VS JSON
• Devolver Javascript
• A cada petición AJAXbloque de
  contestamos con un
   código Javascript, resultante de
   interpretar un archivo .js.erb
•  Los archivos .js.erb mezclan JS y
   Ruby.
• Se almacenan en la carpeta
  app/views
• Insertandorenderizar vistas,
  podemos:
             código ERB:

   usar helpers, iterar con Ruby,
   etc.
Javascript VS JSON
• Devolver Javascript
• A cada petición AJAXbloque de
  contestamos con un
    código Javascript, resultante de
    interpretar un archivo .js.erb
•   Los archivos .js.erb mezclan JS y
    Ruby.
• Se almacenan en la carpeta
  app/views
• Insertandorenderizar vistas,
  podemos:
             código ERB:

    usar helpers, iterar con Ruby,
    etc.
•   Tardan un poco más en ser
    ejecutados por el navegador.
Javascript VS JSON
• Devolver Javascript                   •   Devolver JSON
• A cada petición AJAXbloque de
  contestamos con un
    código Javascript, resultante de
    interpretar un archivo .js.erb
•   Los archivos .js.erb mezclan JS y
    Ruby.
• Se almacenan en la carpeta
  app/views
• Insertandorenderizar vistas,
  podemos:
             código ERB:

    usar helpers, iterar con Ruby,
    etc.
•   Tardan un poco más en ser
    ejecutados por el navegador.
Javascript VS JSON
• Devolver Javascript                   •   Devolver JSON
• A cada petición AJAXbloque de
  contestamos con un
                                        • En un archivo .js normal, con
                                          jQuery escucharemos los
    código Javascript, resultante de        eventos Ajax (success, error,
    interpretar un archivo .js.erb          etc).
•   Los archivos .js.erb mezclan JS y
    Ruby.
• Se almacenan en la carpeta
  app/views
• Insertandorenderizar vistas,
  podemos:
             código ERB:

    usar helpers, iterar con Ruby,
    etc.
•   Tardan un poco más en ser
    ejecutados por el navegador.
Javascript VS JSON
• Devolver Javascript                   •   Devolver JSON
• A cada petición AJAXbloque de
  contestamos con un
                                        • En un archivo .js normal, con
                                          jQuery escucharemos los
    código Javascript, resultante de        eventos Ajax (success, error,
    interpretar un archivo .js.erb          etc).
•   Los archivos .js.erb mezclan JS y
    Ruby.                               •   El controlador Rails
                                            codificará los datos en
• Se almacenan en la carpeta
  app/views
                                            JSON
                                            render json: @task

• Insertandorenderizar vistas,
  podemos:
             código ERB:

    usar helpers, iterar con Ruby,
    etc.
•   Tardan un poco más en ser
    ejecutados por el navegador.
Javascript VS JSON
• Devolver Javascript                   •   Devolver JSON
• A cada petición AJAXbloque de
  contestamos con un
                                        • En un archivo .js normal, con
                                          jQuery escucharemos los
    código Javascript, resultante de        eventos Ajax (success, error,
    interpretar un archivo .js.erb          etc).
•   Los archivos .js.erb mezclan JS y
    Ruby.                               •   El controlador Rails
                                            codificará los datos en
• Se almacenan en la carpeta
  app/views
                                            JSON
                                            render json: @task

• Insertandorenderizar vistas,
  podemos:
             código ERB:                • La función de archivo .js
                                                        callback
                                          definida en el
    usar helpers, iterar con Ruby,          normal recibirá los datos
    etc.                                    JSON y hará algo con ellos.
•   Tardan un poco más en ser
    ejecutados por el navegador.
Devolviendo Javascript
         con Rails
En nuestro controlador:
  def create
    @task = Task.new(params[:task])

    respond_to do |format|
      if @task.save
        format.html { redirect_to @task, notice: 'Task was successfully created.' }
        format.js # Por defecto buscará create.js.erb
      else
        format.html { render action: "new" }
        format.js # Por defecto buscará create.js.erb
      end
    end
  end


Vista
$('ul[data-category_id='+<%= @task.category_id %>+']').append('<li><%= escape_javascript
render("header_task", :task => @task) %></li>');
Autentificación de Usuarios con

          Devise
     https://github.com/plataformatec/devise
Resolución del
ejercicio propuesto
Eso es todo :)
   Gracias!

Más contenido relacionado

KEY
Taller de Introducción a Ruby on Rails
PDF
API REST conceptos (Rails-api)
KEY
JRuby al Rescate de J2EE
KEY
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
KEY
Ruby on rails
PPTX
Jsp(java server pages)
PDF
Jose Rojas Desarrollo Rapido de Aplicaciones con RoR
Taller de Introducción a Ruby on Rails
API REST conceptos (Rails-api)
JRuby al Rescate de J2EE
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Ruby on rails
Jsp(java server pages)
Jose Rojas Desarrollo Rapido de Aplicaciones con RoR

La actualidad más candente (16)

PDF
7 Gemas de Ruby on Rails que podrían salvarte el dia
KEY
Creación de plugins con Grails
PDF
Workshop 7: Single Page Applications
PPTX
Ruby on rails
PPTX
Por qué Symfony2 es tan rápido
PDF
Ruby on Rails - ETyC 2011
PPTX
Java script
PDF
Curso TDD Ruby on Rails #02: Test Driven Development
PDF
Programación Reactiva, Javascript Isomorfo y Meteorjs !
PDF
Introducción a Angular
PDF
PDF
Gwt III - Avanzado
KEY
Rails intro
KEY
Creación de Builders y DSL's con Groovy
PDF
[ES] Introdución al desarrollo de aplicaciones web en java
7 Gemas de Ruby on Rails que podrían salvarte el dia
Creación de plugins con Grails
Workshop 7: Single Page Applications
Ruby on rails
Por qué Symfony2 es tan rápido
Ruby on Rails - ETyC 2011
Java script
Curso TDD Ruby on Rails #02: Test Driven Development
Programación Reactiva, Javascript Isomorfo y Meteorjs !
Introducción a Angular
Gwt III - Avanzado
Rails intro
Creación de Builders y DSL's con Groovy
[ES] Introdución al desarrollo de aplicaciones web en java
Publicidad

Similar a Taller de Introducción a Ruby on Rails (2ª parte) (20)

PDF
Taller backbone.js - Betabeers Córdoba (18/10/2012)
PDF
Conferencia Rails: Integracion Continua Y Rails
ODP
Desarrollo de Apps Web en Ruby on Rails
PDF
Programa en Rails como si Jugases con Lego. Javier Ramirez
PDF
Javier Ramirez Rails Plugins Pdf
PDF
Rails Plugins. Javier Ramirez
PDF
Ruby On Rails Intro
PDF
Aprendiendo AWS Lambda con API Gateway y DynamoDB
ODP
Presentacion Ruby on Rails en Universidad Autónoma 2009
PDF
ODP
Introducción a Kohana Framework
PDF
Java Web Lección 02 - JSP
PPTX
Charla
PPT
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
PDF
Angular js in mobile
PPT
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
PPTX
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
PDF
Introducción a NodeJS
PPTX
06. jsf (java server faces) (1)
PDF
Desarrollo web
Taller backbone.js - Betabeers Córdoba (18/10/2012)
Conferencia Rails: Integracion Continua Y Rails
Desarrollo de Apps Web en Ruby on Rails
Programa en Rails como si Jugases con Lego. Javier Ramirez
Javier Ramirez Rails Plugins Pdf
Rails Plugins. Javier Ramirez
Ruby On Rails Intro
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Presentacion Ruby on Rails en Universidad Autónoma 2009
Introducción a Kohana Framework
Java Web Lección 02 - JSP
Charla
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
Angular js in mobile
introduccion-a-las-aplicaciones-web-y-tecnologia-java.ppt
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
Introducción a NodeJS
06. jsf (java server faces) (1)
Desarrollo web
Publicidad

Más de Diacode (12)

PDF
CI/CD with Kubernetes, Helm & Wercker (#madScalability)
PDF
Phoenix for Rails Devs
PDF
Introduction to Elixir
PDF
Startup nomads
PDF
Ruby on Rails & TDD con RSpec
PDF
Hacking your bank with Ruby and reverse engineering (Madrid.rb)
PDF
TLKR.io @ Betabeers Madrid
PDF
Métricas para hacer crecer tu proyecto
PDF
Métricas para hacer crecer tu proyecto
PDF
Presentación de Kogi
PDF
Educación: The Next Big Thing
PDF
Front-End Frameworks: a quick overview
CI/CD with Kubernetes, Helm & Wercker (#madScalability)
Phoenix for Rails Devs
Introduction to Elixir
Startup nomads
Ruby on Rails & TDD con RSpec
Hacking your bank with Ruby and reverse engineering (Madrid.rb)
TLKR.io @ Betabeers Madrid
Métricas para hacer crecer tu proyecto
Métricas para hacer crecer tu proyecto
Presentación de Kogi
Educación: The Next Big Thing
Front-End Frameworks: a quick overview

Último (20)

PDF
Estrategia de apoyo tecnología grado 9-3
PPTX
Sesion 1 de microsoft power point - Clase 1
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PDF
CyberOps Associate - Cisco Networking Academy
PDF
clase auditoria informatica 2025.........
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PPTX
Propuesta BKP servidores con Acronis1.pptx
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PPT
Que son las redes de computadores y sus partes
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PDF
Diapositiva proyecto de vida, materia catedra
PPTX
Presentación de Redes de Datos modelo osi
PPT
introduccion a las_web en el 2025_mejoras.ppt
PDF
Calidad desde el Docente y la mejora continua .pdf
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
Estrategia de apoyo tecnología grado 9-3
Sesion 1 de microsoft power point - Clase 1
El-Gobierno-Electrónico-En-El-Estado-Bolivia
CyberOps Associate - Cisco Networking Academy
clase auditoria informatica 2025.........
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
Propuesta BKP servidores con Acronis1.pptx
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
Que son las redes de computadores y sus partes
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
Diapositiva proyecto de vida, materia catedra
Presentación de Redes de Datos modelo osi
introduccion a las_web en el 2025_mejoras.ppt
Calidad desde el Docente y la mejora continua .pdf
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
Influencia-del-uso-de-redes-sociales.pdf
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
REDES INFORMATICAS REDES INFORMATICAS.pptx

Taller de Introducción a Ruby on Rails (2ª parte)

  • 1. 2ª Parte Javier Cuevas - Diacode.com
  • 2. Menú del día • Repaso a generadores y aclaraciones sobre Scaffolding • AJAX con Rails • Autentificación de usuarios con Devise • Resolución del ejercicio propuesto
  • 3. Repaso a generadores y aclaraciones sobre Scaffolding
  • 4. Para tener un CRUD de un modelo necesitamos: • Modelo • Controlador • Vistas • Tabla en la base de datos (migración) • Rutas configuradas (routes.rb)
  • 5. Para tener un CRUD de un modelo necesitamos: • Modelo Todo esto nos lo ofrece • Controlador el scaffold • Vistas • Tabla en la base de datos (migración) • Rutas configuradas (routes.rb)
  • 6. El Scaffold además... rails g scaffold Task invoke active_record create db/migrate/20120224135839_create_tasks.rb name:string create app/models/task.rb description:text invoke test_unit priority:integer create test/unit/task_test.rb create test/fixtures/tasks.yml due_to:date route resources :tasks done:boolean invoke scaffold_controller create app/controllers/tasks_controller.rb category:references invoke erb create app/views/tasks create app/views/tasks/index.html.erb create app/views/tasks/edit.html.erb create app/views/tasks/show.html.erb create app/views/tasks/new.html.erb create app/views/tasks/_form.html.erb invoke test_unit create test/functional/tasks_controller_test.rb invoke helper create app/helpers/tasks_helper.rb invoke test_unit create test/unit/helpers/tasks_helper_test.rb invoke assets invoke coffee create app/assets/javascripts/tasks.js.coffee invoke scss create app/assets/stylesheets/tasks.css.scss invoke scss create app/assets/stylesheets/scaffolds.css.scss
  • 7. El Scaffold además... rails g scaffold Task invoke active_record create db/migrate/20120224135839_create_tasks.rb name:string create app/models/task.rb description:text invoke test_unit priority:integer create test/unit/task_test.rb create test/fixtures/tasks.yml due_to:date route resources :tasks done:boolean invoke scaffold_controller create app/controllers/tasks_controller.rb category:references invoke erb create app/views/tasks create app/views/tasks/index.html.erb Genera create create create app/views/tasks/edit.html.erb app/views/tasks/show.html.erb app/views/tasks/new.html.erb CSS (SCSS), create invoke create app/views/tasks/_form.html.erb test_unit test/functional/tasks_controller_test.rb Javascript invoke create invoke helper app/helpers/tasks_helper.rb test_unit (Coffee), create invoke invoke assets test/unit/helpers/tasks_helper_test.rb coffee Helpers, y create invoke create app/assets/javascripts/tasks.js.coffee scss app/assets/stylesheets/tasks.css.scss Tests invoke create scss app/assets/stylesheets/scaffolds.css.scss
  • 8. El Scaffold NO hace... • No incluye selects para relacionar modelos en los formularios que crea. • Si hiciste scaffold, y posteriormente incluyes un campo nuevo a la tabla de tu modelo, las vistas no se actualizan solas: tendrás que actualizarlas tú. • Si añades nuevas acciones a tu controlador, tendrás que incluirlas en el routes.rb. El scaffold solo define rutas para el CRUD.
  • 9. Montando un CRUD SIN Scaffold • Modelo y Tabla (migración) rails g model User name:string rake db:migrate • Modelo sin Tabla (migración) rails g model User name:string --migrations false • Controlador rails g controller User tip: rails g controller --help • Tendremos que añadir las acciones CRUD (index, show, edit, create, update, destroy) al controlador a mano • Las vistas las creamos a mano desde nuestro editor • Tendremos que editar el routes.rb y añadir rutas CRUD (resources :users) o rutas propias
  • 11. Algunas notas sobre Rails y Javascript • Rails es Javascript framework agnostic, es decir, que puede integrarse tanto con jQuery como con Prototype, etc. • Para integrar Rails con cada framework se usan “adaptadores”. • Por defecto Rails añade al Gemfile el adaptador jquery-rails. Es decir: sin hacer nada, podemos empezar a usar jQuery.
  • 12. Generar petición AJAX con Rails <%= link_to 'Destroy', task, confirm: 'Are you sure?', method: :delete, :remote => true %> <%= form_for(@task, :remote => true) do |f| %>
  • 13. Generar petición AJAX con Rails <%= link_to 'Destroy', task, confirm: 'Are you sure?', method: :delete, :remote => true %> <%= form_for(@task, :remote => true) do |f| %> Por defecto estas peticiones esperan recibir código Javascript
  • 14. ¿Qué debe devolver la petición AJAX? • Una petición AJAX puede devolver diferentes tipos de datos: • Código Javascript • JSON • JSONP (llamada a función JS + datos JSON) • Texto • HTML
  • 15. ¿Qué debe devolver la petición AJAX? • Una petición AJAX puede devolver diferentes tipos de datos: • Código Javascript Normalmente usaremos • JSON estos dos • JSONP (llamada a función JS + datos JSON) • Texto • HTML
  • 17. Javascript VS JSON • Devolver Javascript
  • 18. Javascript VS JSON • Devolver Javascript • A cada petición AJAXbloque de contestamos con un código Javascript, resultante de interpretar un archivo .js.erb
  • 19. Javascript VS JSON • Devolver Javascript • A cada petición AJAXbloque de contestamos con un código Javascript, resultante de interpretar un archivo .js.erb • Los archivos .js.erb mezclan JS y Ruby.
  • 20. Javascript VS JSON • Devolver Javascript • A cada petición AJAXbloque de contestamos con un código Javascript, resultante de interpretar un archivo .js.erb • Los archivos .js.erb mezclan JS y Ruby. • Se almacenan en la carpeta app/views
  • 21. Javascript VS JSON • Devolver Javascript • A cada petición AJAXbloque de contestamos con un código Javascript, resultante de interpretar un archivo .js.erb • Los archivos .js.erb mezclan JS y Ruby. • Se almacenan en la carpeta app/views • Insertandorenderizar vistas, podemos: código ERB: usar helpers, iterar con Ruby, etc.
  • 22. Javascript VS JSON • Devolver Javascript • A cada petición AJAXbloque de contestamos con un código Javascript, resultante de interpretar un archivo .js.erb • Los archivos .js.erb mezclan JS y Ruby. • Se almacenan en la carpeta app/views • Insertandorenderizar vistas, podemos: código ERB: usar helpers, iterar con Ruby, etc. • Tardan un poco más en ser ejecutados por el navegador.
  • 23. Javascript VS JSON • Devolver Javascript • Devolver JSON • A cada petición AJAXbloque de contestamos con un código Javascript, resultante de interpretar un archivo .js.erb • Los archivos .js.erb mezclan JS y Ruby. • Se almacenan en la carpeta app/views • Insertandorenderizar vistas, podemos: código ERB: usar helpers, iterar con Ruby, etc. • Tardan un poco más en ser ejecutados por el navegador.
  • 24. Javascript VS JSON • Devolver Javascript • Devolver JSON • A cada petición AJAXbloque de contestamos con un • En un archivo .js normal, con jQuery escucharemos los código Javascript, resultante de eventos Ajax (success, error, interpretar un archivo .js.erb etc). • Los archivos .js.erb mezclan JS y Ruby. • Se almacenan en la carpeta app/views • Insertandorenderizar vistas, podemos: código ERB: usar helpers, iterar con Ruby, etc. • Tardan un poco más en ser ejecutados por el navegador.
  • 25. Javascript VS JSON • Devolver Javascript • Devolver JSON • A cada petición AJAXbloque de contestamos con un • En un archivo .js normal, con jQuery escucharemos los código Javascript, resultante de eventos Ajax (success, error, interpretar un archivo .js.erb etc). • Los archivos .js.erb mezclan JS y Ruby. • El controlador Rails codificará los datos en • Se almacenan en la carpeta app/views JSON render json: @task • Insertandorenderizar vistas, podemos: código ERB: usar helpers, iterar con Ruby, etc. • Tardan un poco más en ser ejecutados por el navegador.
  • 26. Javascript VS JSON • Devolver Javascript • Devolver JSON • A cada petición AJAXbloque de contestamos con un • En un archivo .js normal, con jQuery escucharemos los código Javascript, resultante de eventos Ajax (success, error, interpretar un archivo .js.erb etc). • Los archivos .js.erb mezclan JS y Ruby. • El controlador Rails codificará los datos en • Se almacenan en la carpeta app/views JSON render json: @task • Insertandorenderizar vistas, podemos: código ERB: • La función de archivo .js callback definida en el usar helpers, iterar con Ruby, normal recibirá los datos etc. JSON y hará algo con ellos. • Tardan un poco más en ser ejecutados por el navegador.
  • 27. Devolviendo Javascript con Rails En nuestro controlador: def create @task = Task.new(params[:task]) respond_to do |format| if @task.save format.html { redirect_to @task, notice: 'Task was successfully created.' } format.js # Por defecto buscará create.js.erb else format.html { render action: "new" } format.js # Por defecto buscará create.js.erb end end end Vista $('ul[data-category_id='+<%= @task.category_id %>+']').append('<li><%= escape_javascript render("header_task", :task => @task) %></li>');
  • 28. Autentificación de Usuarios con Devise https://github.com/plataformatec/devise
  • 30. Eso es todo :) Gracias!

Notas del editor