6.1. How Rails
Implements Ajax
Rails has a simple, consistent model for how it
implements Ajax operations. Once the browser has rendered and
displayed the initial web page, different user actions cause it to
display a new web page (like any traditional web application) or
trigger an Ajax operation:
Some trigger
fires
-
This trigger could be the user clicking on a
button or link, the user making changes to the data on a form or in
a field, or just a periodic trigger (based on a timer).
The web client
calls the server
-
A JavaScript method,
XMLHttpRequest, sends data
associated with the trigger to an action handler on the server. The
data might be the ID of a checkbox, the text in an entry field, or
a whole form.
The server does
something
-
The server-side action handlera Rails controller
action (for our purposes)-- does something with the data and
returns an HTML fragment to the web client.
The client
receives the response
-
The client-side JavaScript, which Rails creates
automatically, receives the HTML fragment and uses it to update a
specified part of the current page's HTML, often the content of a
<div> tag.
These steps are the simplest way to use Ajax in
a Rails application, but with a little extra work, you can have the
server return any kind of data in response to an Ajax request, and
you can create custom JavaScript in the browser to perform more
involved interactions. We'll stick to HTML fragments in this chapter.
Rails uses the Prototype and script.aculo.us JavaScript libraries to
implement browser support for Ajax. You can use these libraries
independently of Rails, but with their seamless integration with
Rails, you probably won't want to. Throughout this chapter, we'll
exploit the Ajax and special-effects capabilities that come with
Rails to implement missing features in our Photo Share
application.
 |