SlideShare ist ein Scribd-Unternehmen logo
1 von 22
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

Andere mochten auch

La ciudad-de-paris
La ciudad-de-parisLa ciudad-de-paris
La ciudad-de-parisbovarienne
 
Meningiome a cellules claires
Meningiome a cellules clairesMeningiome a cellules claires
Meningiome a cellules clairesneurochirurgie
 
Legislacion mercantil y societaria
Legislacion mercantil y societariaLegislacion mercantil y societaria
Legislacion mercantil y societariaRonald Gordillo
 
Dijimos que estaba bien
Dijimos que estaba bienDijimos que estaba bien
Dijimos que estaba bienLeila Cura
 
Qualimatest - Die automatische Qualitätskontrolle bei der spanenden Metallver...
Qualimatest - Die automatische Qualitätskontrolle bei der spanenden Metallver...Qualimatest - Die automatische Qualitätskontrolle bei der spanenden Metallver...
Qualimatest - Die automatische Qualitätskontrolle bei der spanenden Metallver...Ivan Meissner
 
Herraminetas 2.0 En EducacióN Digital
Herraminetas 2.0 En EducacióN DigitalHerraminetas 2.0 En EducacióN Digital
Herraminetas 2.0 En EducacióN DigitalGuadalinfo Almensilla
 
Les dernières avancées html5 & css3 en action !
Les dernières avancées html5 & css3 en action !Les dernières avancées html5 & css3 en action !
Les dernières avancées html5 & css3 en action !davrous
 
Cinco conceptos claves
Cinco conceptos clavesCinco conceptos claves
Cinco conceptos clavesMCCB
 
Paula Hannemann, Social Media: How to ride the Storm (German, updated version)
Paula Hannemann, Social Media: How to ride the Storm (German, updated version)Paula Hannemann, Social Media: How to ride the Storm (German, updated version)
Paula Hannemann, Social Media: How to ride the Storm (German, updated version)Paula Peters
 
Social Media Strategie Kursergebnis: H&M
Social Media Strategie Kursergebnis: H&MSocial Media Strategie Kursergebnis: H&M
Social Media Strategie Kursergebnis: H&MFH Düsseldorf
 
Les Annonceurs et l’Affiliation en France - Enquête CPA 2012
Les Annonceurs et l’Affiliation en France - Enquête CPA 2012Les Annonceurs et l’Affiliation en France - Enquête CPA 2012
Les Annonceurs et l’Affiliation en France - Enquête CPA 2012Pierre Labousset
 
Job positions
Job positionsJob positions
Job positionsvwadycki
 

Andere mochten auch (20)

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

Ähnlich wie Ruby on Rails SS09 11

Ruby on Rails in a metro session
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro sessionVirttoo org
 
An Introduction to Ruby On Rails
An Introduction to Ruby On RailsAn Introduction to Ruby On Rails
An Introduction to Ruby On RailsJonathan Weiss
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in RailsAngelo Maron
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittdominion
 
Collaboration Days 2011 - Damit die Tester schneller ran können.
Collaboration Days 2011 - Damit die Tester schneller ran können.Collaboration Days 2011 - Damit die Tester schneller ran können.
Collaboration Days 2011 - Damit die Tester schneller ran können.David Schneider
 
Agile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsHussein Morsy
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der PraxisTobias Kraft
 
OSMC 2012 | End2End-Monitoring von Webapplikationen mit SAHI by Simon Meggle
OSMC 2012 | End2End-Monitoring von Webapplikationen mit SAHI by Simon MeggleOSMC 2012 | End2End-Monitoring von Webapplikationen mit SAHI by Simon Meggle
OSMC 2012 | End2End-Monitoring von Webapplikationen mit SAHI by Simon MeggleNETWAYS
 
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft AG
 
Infopark CMS Fiona mit Ruby on Rails
Infopark CMS Fiona mit Ruby on RailsInfopark CMS Fiona mit Ruby on Rails
Infopark CMS Fiona mit Ruby on RailsJustRelate
 
Einführung in Ruby On Rails
Einführung in Ruby On RailsEinführung in Ruby On Rails
Einführung in Ruby On Railsfoobar2605
 
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in RubyPerformanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in Rubyvesparun
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDIadesso AG
 
Von 0 auf 100 - Performance im Web
Von 0 auf 100 - Performance im WebVon 0 auf 100 - Performance im Web
Von 0 auf 100 - Performance im WebSebastian Springer
 

Ähnlich wie Ruby on Rails SS09 11 (20)

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

Mehr von Daniel Dengler

Mehr von Daniel Dengler (6)

Ruby on Rails SS09 10
Ruby on Rails SS09 10Ruby on Rails SS09 10
Ruby on Rails SS09 10
 
Ruby on Rails SS09 07
Ruby on Rails SS09 07Ruby on Rails SS09 07
Ruby on Rails SS09 07
 
Ruby on Rails SS09 05
Ruby on Rails SS09 05Ruby on Rails SS09 05
Ruby on Rails SS09 05
 
Ruby on Rails SS09 04
Ruby on Rails SS09 04Ruby on Rails SS09 04
Ruby on Rails SS09 04
 
Ruby on Rails SS09 03
Ruby on Rails SS09 03Ruby on Rails SS09 03
Ruby on Rails SS09 03
 
Ruby on Rails SS09 01
Ruby on Rails SS09 01Ruby on Rails SS09 01
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. ?