advanced rails ajax techniques

69
Advanced Rails AJAX techniques Thomas Fuchs

Upload: sampetruda

Post on 19-Jan-2015

1.024 views

Category:

Documents


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Advanced Rails AJAX techniques

Advanced Rails AJAX techniques

Thomas Fuchs

Page 2: Advanced Rails AJAX techniques

Thomas Fuchs

• wollzelle• Core team member of

Ruby on Rails

• script.aculo.us

• mir.aculo.us

Page 3: Advanced Rails AJAX techniques

• Branding/Design/Web

• fluxiom (yes, we‘ll get to see it)

• http://www.wollzelle.com/

Page 4: Advanced Rails AJAX techniques

The tools

Page 5: Advanced Rails AJAX techniques

JavaScript,as seen by the browser

Source: http://www.pollux.franken.de/KNF/

Page 6: Advanced Rails AJAX techniques

JavaScript,as seen by the developer

From 2001: A Space Odyssey

Page 7: Advanced Rails AJAX techniques

Concentrate on your application…

Page 8: Advanced Rails AJAX techniques

…and not onbrowser bugs.

Page 9: Advanced Rails AJAX techniques

Source: http://threadless.com/submission/46364/It

Page 10: Advanced Rails AJAX techniques

1.5

Page 11: Advanced Rails AJAX techniques

JavaScript, minus the „WTF?“

Page 12: Advanced Rails AJAX techniques

AJAX

Page 13: Advanced Rails AJAX techniques

Enumerables

Page 14: Advanced Rails AJAX techniques

$ and $$

Page 15: Advanced Rails AJAX techniques
Page 16: Advanced Rails AJAX techniques

Direct Element extensions

Page 17: Advanced Rails AJAX techniques

vs

Prototype 1.4

Prototype 1.5

Page 18: Advanced Rails AJAX techniques

Events

Page 19: Advanced Rails AJAX techniques

1.6

Page 20: Advanced Rails AJAX techniques

Visual effects

Page 21: Advanced Rails AJAX techniques

Drag and Drop

Page 22: Advanced Rails AJAX techniques

Ready-to-use controls

Page 23: Advanced Rails AJAX techniques

Plus some extrasJavaScript unit testing, DOM Builder

Page 24: Advanced Rails AJAX techniques

On-the-fly JavaScript:Rails JavaScript

Templates

Page 25: Advanced Rails AJAX techniques

Rails Ajax:

A HistoryLast Spike of the CPR - Craigellachie, British Columbia, Canada

Courtesy of the National Library and Archives of Canada

Page 26: Advanced Rails AJAX techniques

Rails Ajax: A HistoryIdeas to make the

web snappierLate 20th century

Prototype 1.0,Rails Helpers

Rails 0.11, March 22, 2005

Prototype 1.3,script.aculo.us released

Rails 0.13, July 6, 2005

Prototype 1.4, script.aculo.us 1.5

Rails 1.0, December 13, 2005

Rails JavaScript templates,Prototype 1.5, script.aculo.us 1.6

Rails 1.1, March 28, 2006

In just one year

Page 27: Advanced Rails AJAX techniques

Ruby on RailsRJS Templates

+

Page 28: Advanced Rails AJAX techniques

No JavaScript programming necessary

Page 29: Advanced Rails AJAX techniques

(might have something to do with David)

Danish flag

Page 30: Advanced Rails AJAX techniques

Say it in Ruby

generates JavaScript:

Page 31: Advanced Rails AJAX techniques

What it does

blah.rjsgeneratesJavaScript

„blah“ actiongets called

Prototype sees„text/javascript“HTTP header

and evalsJavaScript

Pure Ruby!

Page 32: Advanced Rails AJAX techniques

Of course,just think of it as magic.

Sam Stephenson,author of Prototype

Page 33: Advanced Rails AJAX techniques

replaceReplaces complete element

Page 34: Advanced Rails AJAX techniques

replace_htmlReplaces contents of an element

same as

Page 35: Advanced Rails AJAX techniques

Staying DRY

equivalent to

Refreshes contents of element „list“ withthe partial of the same name

Page 36: Advanced Rails AJAX techniques

insert_html

page.sortable re-inits the sortable list so thenewly added item is recognized

Insert content at specific positions within an element

Page 37: Advanced Rails AJAX techniques

selectCSS selector-based loops

Page 38: Advanced Rails AJAX techniques

selectadvanced Prototype enumerables

creates a JavaScript „t“ variable, containing the result

Page 39: Advanced Rails AJAX techniques

selectadvanced Prototype enumerables

creates „h“ variable, containing an Array of elements(that are visible)

Page 40: Advanced Rails AJAX techniques

selectusing Prototype to inspect stuff

Page 41: Advanced Rails AJAX techniques

<<Reuse plain JavaScript

Page 42: Advanced Rails AJAX techniques

delay

Page 43: Advanced Rails AJAX techniques

Prototype/script.aculo.usElement extensions

Page 44: Advanced Rails AJAX techniques

Chains

Hide the first element thatis a „P“ and has a class „hint“:

Page 45: Advanced Rails AJAX techniques

script.aculo.us

Visual Effects

:appear, :fade, :slide_up, :slide_down, :blind_up, :blind_down, :pulsate, :switch_off,

:puff and more

(or DIY)

Page 46: Advanced Rails AJAX techniques

script.aculo.us

Drag & Drop

Page 47: Advanced Rails AJAX techniques

Call your own

RJS

JavaScript

Page 48: Advanced Rails AJAX techniques

render :update(controller-based)

Page 49: Advanced Rails AJAX techniques

RJS helpersHelper:

Call in .rjs:

Page 50: Advanced Rails AJAX techniques

redirect_to

(takes url_for syntax)

Page 51: Advanced Rails AJAX techniques

respond_to

one action for Ajax…

…and non-Ajax calls

Page 52: Advanced Rails AJAX techniques

Helpful hints, built-in

config/environments/development.rb:

Page 53: Advanced Rails AJAX techniques

API Documentation

ActionView::Helpers::PrototypeHelper

and

ActionView::Helpers::PrototypeHelper::JavaScriptGenerator::GeneratorMethods

Page 54: Advanced Rails AJAX techniques

What about debugging?

Page 55: Advanced Rails AJAX techniques

No rocket surgery,either.

Page 56: Advanced Rails AJAX techniques

The first rule of AJAX

debugging:Use Firefox

Page 57: Advanced Rails AJAX techniques

+Extensions

The second rule of AJAX

debugging:Use Firefox

Page 58: Advanced Rails AJAX techniques

Firebug

Page 59: Advanced Rails AJAX techniques

Firebug

Page 60: Advanced Rails AJAX techniques

Web DeveloperExtension

Page 61: Advanced Rails AJAX techniques

Venkman JavaScript Debugger

Page 62: Advanced Rails AJAX techniques

Tamperdata

Page 63: Advanced Rails AJAX techniques

The third rule:

Test with all browsers

you want to support

Page 64: Advanced Rails AJAX techniques

Safari Web Inspector

Page 66: Advanced Rails AJAX techniques

„It‘s more like Web 3.0“

Page 67: Advanced Rails AJAX techniques
Page 69: Advanced Rails AJAX techniques

Launching April 2006www.fluxiom.com