SlideShare ist ein Scribd-Unternehmen logo
Daniel Dengler
                                                                                               web developer




   Ruby on Rails
               Workshop SS 2009


„Ruby on Rails“ and the Rails-Logo are registered trademarks of David Heinemeier Hansson – www.rubyonrails.org
11
Ruby on Rails
     AJAX
AJAX
asynchronous JavaScript and XML
Verwendung

Dynamische GUI ähnliche Anwendungen oft mit
den Zielen die Serverlast zu reduzieren und die
Usability zu steigern.
Technologien:
 •   JavaScript
 •   XML
Browser        Server

Seite anfragen
Browser            Server

Seite anfragen
                 Seite generieren
Browser            Server

Seite anfragen
                 Seite generieren
Seite anzeigen
Browser            Server

 Seite anfragen
                  Seite generieren
 Seite anzeigen

Events abwarten
Browser            Server

 Seite anfragen
                  Seite generieren
 Seite anzeigen

Events abwarten

 AJAX-Anfrage
Browser             Server

 Seite anfragen
                   Seite generieren
 Seite anzeigen

Events abwarten

 AJAX-Anfrage
                  Skripte oder Daten
                      generieren
Browser               Server

  Seite anfragen
                       Seite generieren
  Seite anzeigen

 Events abwarten

  AJAX-Anfrage
                      Skripte oder Daten
Antwort auswerten         generieren
(Skripte ausführen,
  Inhalte ändern)
Der Rails-Ansatz
Das Modul JavascriptHelper in Rails kapselt die
Generierung von JavaScript in Ruby-Code. Daher
muss für die einfache Verwendung von AJAX in Rails
kein eigener JavaScript-Code geschrieben werden
Mitgelieferte Bibliotheken:
 •   Prototype (Core)
 •   Effects, DragDrop, Controls
Bibliotheken einbinden


Im jeweiligen Layout im Head Bereich anzugeben:
<%= javascript_include_tag :defaults %>
Lädt die Bibliotheken im Browser
Elemente eindeutig bezeichnen



•   Elemente die später manipuliert werden sollen,
    müssen eindeutig identi zierbar sein.
•   Einfachste Lösung: ElementIDs in das generierte
    HTML Dokument aufnehmen
Elemente eindeutig bezeichnen


<% content_tag_for(:tr, task) do %>
  <td> TabellenZellen </td> ...
<% end %>


# Generiert:
<tr class="task" id="task_33"> ... </tr>
AJAX Links

<%= link_to_remote "Destroy",
 :url => project_path(@project),
 :con rm => 'Are you sure?',
 :method => :delete %>
Erstellt einen „JavaScript“ Link, der einen AJAX Aufruf
startet. Das Ergebnis des Aufrufes wird ausgewertet
und die Seite entsprechend verändert.
AJAX Formulare

<% remote_form_for(@project) do |f| %>
 FORMULARELEMENTE
<% end %>
Erstellt ein „JavaScript“ Formular, das einen AJAX
Aufruf startet. Das Ergebnis des Aufrufes wird
ausgewertet und die Seite entsprechend verändert.
Die Antwort
# DELETE /tasks/1
# DELETE /tasks/1.xml
# DELETE /tasks/1.js
def destroy
  @task = Task.find(params[:id])
  @task.destroy

  respond_to do |format|
    format.html { redirect_to(project_tasks_url(@project)) }
    format.js
    format.xml { head :ok }
  end
end
Die Antwort

respond_to do |format|
  format.html { redirect_to(project_tasks_url(@project)) }
  format.js
  format.xml { head :ok }
end

# format.js leitet zum view delete.js.rjs weiter
# Element das gelöscht wurde ausblenden
page.visual_effect :fade, dom_id(@task)
Details
ActionView::Helpers::PrototypeHelper
ActionView::Helpers::PrototypeHelper::JavaScriptGen
erator


Helfer für die Identi zierung von HTML Elementen

ActionView::Helpers::RecordTagHelper
ActionView::Helpers::RecordIdenti cationHelper
Praxis-Session
?

Weitere ähnliche Inhalte

PDF
Liquid - Templating on Rails
PDF
Unobtrusive JavaScript in Rails 3
ODP
Grails 0.3-SNAPSHOT Presentation WJAX 2006
PDF
MVC 1.0: Zeitgemäße Webanwendungen in JavaEE
PPTX
La Matinale - X-PRIME Groupe - Facebook, etats des lieux de la plateforme
PDF
Proalan.oscardozo70@hotmail.com katherinezapata
PPT
Presentation copilot partners table ronde micro paiement
PDF
Extrait catalogue oma
Liquid - Templating on Rails
Unobtrusive JavaScript in Rails 3
Grails 0.3-SNAPSHOT Presentation WJAX 2006
MVC 1.0: Zeitgemäße Webanwendungen in JavaEE
La Matinale - X-PRIME Groupe - Facebook, etats des lieux de la plateforme
Proalan.oscardozo70@hotmail.com katherinezapata
Presentation copilot partners table ronde micro paiement
Extrait catalogue oma

Andere mochten auch (20)

PPS
La ciudad-de-paris
PPT
Meningiome a cellules claires
PPT
Sous le radar
PDF
Que llepasou a coelliño
PPT
Legislacion mercantil y societaria
PDF
Meritek 2012
PPS
Dijimos que estaba bien
PDF
Qualimatest - Die automatische Qualitätskontrolle bei der spanenden Metallver...
ODP
Herraminetas 2.0 En EducacióN Digital
PPTX
Les dernières avancées html5 & css3 en action !
DOC
Cinco conceptos claves
PPSX
Client developer communication
PDF
Paula Hannemann, Social Media: How to ride the Storm (German, updated version)
PDF
Social Media Strategie Kursergebnis: H&M
PDF
Les Annonceurs et l’Affiliation en France - Enquête CPA 2012
PPTX
TROLL! (What is it good for?)
PDF
II Visita Últimos Jueves de la Ciudad del Sol. San Eustaquio
PDF
05 Sacale partido a tu android - Bluethoot y conexion wifi. compartir
PDF
05 reseaux telecommunication
La ciudad-de-paris
Meningiome a cellules claires
Sous le radar
Que llepasou a coelliño
Legislacion mercantil y societaria
Meritek 2012
Dijimos que estaba bien
Qualimatest - Die automatische Qualitätskontrolle bei der spanenden Metallver...
Herraminetas 2.0 En EducacióN Digital
Les dernières avancées html5 & css3 en action !
Cinco conceptos claves
Client developer communication
Paula Hannemann, Social Media: How to ride the Storm (German, updated version)
Social Media Strategie Kursergebnis: H&M
Les Annonceurs et l’Affiliation en France - Enquête CPA 2012
TROLL! (What is it good for?)
II Visita Últimos Jueves de la Ciudad del Sol. San Eustaquio
05 Sacale partido a tu android - Bluethoot y conexion wifi. compartir
05 reseaux telecommunication
Anzeige

Ähnlich wie Ruby on Rails SS09 11 (20)

PDF
Ruby on Rails in a metro session
KEY
Ruby on Rails SS09 02
PDF
An Introduction to Ruby On Rails
PDF
Domain Driven Design in Rails
PDF
Ajax in domino web-anwendungen - der nächste schritt
PPTX
Collaboration Days 2011 - Damit die Tester schneller ran können.
PDF
Agile Softwareentwicklung mit Rails
PDF
Grails im Überblick und in der Praxis
KEY
Ruby on Rails SS09 12
KEY
Ruby on Rails SS09 06
PDF
OSMC 2012 | End2End-Monitoring von Webapplikationen mit SAHI by Simon Meggle
PDF
Creasoft-Akademie - Mobile Multiplattform Apps
PDF
AngularJS
PDF
Infopark CMS Fiona mit Ruby on Rails
PDF
Ruby on Rails
PDF
Einführung in Ruby On Rails
PDF
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
PDF
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
PDF
Von 0 auf 100 - Performance im Web
KEY
Ruby on Rails SS09 08
Ruby on Rails in a metro session
Ruby on Rails SS09 02
An Introduction to Ruby On Rails
Domain Driven Design in Rails
Ajax in domino web-anwendungen - der nächste schritt
Collaboration Days 2011 - Damit die Tester schneller ran können.
Agile Softwareentwicklung mit Rails
Grails im Überblick und in der Praxis
Ruby on Rails SS09 12
Ruby on Rails SS09 06
OSMC 2012 | End2End-Monitoring von Webapplikationen mit SAHI by Simon Meggle
Creasoft-Akademie - Mobile Multiplattform Apps
AngularJS
Infopark CMS Fiona mit Ruby on Rails
Ruby on Rails
Einführung in Ruby On Rails
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Von 0 auf 100 - Performance im Web
Ruby on Rails SS09 08
Anzeige

Mehr von Daniel Dengler (6)

KEY
Ruby on Rails SS09 10
KEY
Ruby on Rails SS09 07
KEY
Ruby on Rails SS09 05
KEY
Ruby on Rails SS09 04
KEY
Ruby on Rails SS09 03
KEY
Ruby on Rails SS09 01
Ruby on Rails SS09 10
Ruby on Rails SS09 07
Ruby on Rails SS09 05
Ruby on Rails SS09 04
Ruby on Rails SS09 03
Ruby on Rails SS09 01

Ruby on Rails SS09 11

  • 1. Daniel Dengler web developer Ruby on Rails Workshop SS 2009 „Ruby on Rails“ and the Rails-Logo are registered trademarks of David Heinemeier Hansson – www.rubyonrails.org
  • 4. Verwendung Dynamische GUI ähnliche Anwendungen oft mit den Zielen die Serverlast zu reduzieren und die Usability zu steigern. Technologien: • JavaScript • XML
  • 5. Browser Server Seite anfragen
  • 6. Browser Server Seite anfragen Seite generieren
  • 7. Browser Server Seite anfragen Seite generieren Seite anzeigen
  • 8. Browser Server Seite anfragen Seite generieren Seite anzeigen Events abwarten
  • 9. Browser Server Seite anfragen Seite generieren Seite anzeigen Events abwarten AJAX-Anfrage
  • 10. Browser Server Seite anfragen Seite generieren Seite anzeigen Events abwarten AJAX-Anfrage Skripte oder Daten generieren
  • 11. Browser Server Seite anfragen Seite generieren Seite anzeigen Events abwarten AJAX-Anfrage Skripte oder Daten Antwort auswerten generieren (Skripte ausführen, Inhalte ändern)
  • 12. Der Rails-Ansatz Das Modul JavascriptHelper in Rails kapselt die Generierung von JavaScript in Ruby-Code. Daher muss für die einfache Verwendung von AJAX in Rails kein eigener JavaScript-Code geschrieben werden Mitgelieferte Bibliotheken: • Prototype (Core) • Effects, DragDrop, Controls
  • 13. Bibliotheken einbinden Im jeweiligen Layout im Head Bereich anzugeben: <%= javascript_include_tag :defaults %> Lädt die Bibliotheken im Browser
  • 14. Elemente eindeutig bezeichnen • Elemente die später manipuliert werden sollen, müssen eindeutig identi zierbar sein. • Einfachste Lösung: ElementIDs in das generierte HTML Dokument aufnehmen
  • 15. Elemente eindeutig bezeichnen <% content_tag_for(:tr, task) do %> <td> TabellenZellen </td> ... <% end %> # Generiert: <tr class="task" id="task_33"> ... </tr>
  • 16. AJAX Links <%= link_to_remote "Destroy", :url => project_path(@project), :con rm => 'Are you sure?', :method => :delete %> Erstellt einen „JavaScript“ Link, der einen AJAX Aufruf startet. Das Ergebnis des Aufrufes wird ausgewertet und die Seite entsprechend verändert.
  • 17. AJAX Formulare <% remote_form_for(@project) do |f| %> FORMULARELEMENTE <% end %> Erstellt ein „JavaScript“ Formular, das einen AJAX Aufruf startet. Das Ergebnis des Aufrufes wird ausgewertet und die Seite entsprechend verändert.
  • 18. Die Antwort # DELETE /tasks/1 # DELETE /tasks/1.xml # DELETE /tasks/1.js def destroy @task = Task.find(params[:id]) @task.destroy respond_to do |format| format.html { redirect_to(project_tasks_url(@project)) } format.js format.xml { head :ok } end end
  • 19. Die Antwort respond_to do |format| format.html { redirect_to(project_tasks_url(@project)) } format.js format.xml { head :ok } end # format.js leitet zum view delete.js.rjs weiter # Element das gelöscht wurde ausblenden page.visual_effect :fade, dom_id(@task)
  • 20. Details ActionView::Helpers::PrototypeHelper ActionView::Helpers::PrototypeHelper::JavaScriptGen erator Helfer für die Identi zierung von HTML Elementen ActionView::Helpers::RecordTagHelper ActionView::Helpers::RecordIdenti cationHelper
  • 22. ?