O'Reilly logo

Learning Rails by Edd Dumbill, Simon St. Laurent

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Supporting Ajax with Rails

There are many different ways to provide Ajax support from Rails. Some use Rails itself as a foundation, a provider of web services, while others more tightly bind the Rails application to the details of the client interface.

Rails as a Server API

If a manager comes running down the hallway shouting that you should scrap everything you’ve built because he’s going to replace it with an Ajax application, you may, if you’ve built your application using Rails’ RESTful features, remain pretty calm. If you’ve built a consistently RESTful API, then Ajax applications issue their requests to it without you needing to tear it down and start over. Some refactoring to let the Ajax application grab smaller pieces might be a good idea, but overall you’ll have a solid foundation.

Note

The RESTful foundation is solid enough, in fact, that anyone who has access to your site could potentially build an Ajax application on top of it. While JavaScript limits XmlHTTPRequest calls to the same server the script came from, anyone who wants to can build a mashup combining your data with their interface if they’re willing to set up some creative HTTP proxying.

That doesn’t mean the job is done, of course—it just means that most of what you’ve built will work. You can focus on the clearly Ajax bits, mostly in your views, rather than having to sort through a huge mess of code that used to generate one kind of HTML data structure and trying to figure out how to make it generate another ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required