O'Reilly logo

Ruby on Rails® for Microsoft Developers by Antonio Cangiano

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

9.5. Adding a Sprinkle of Ajax

To add a sprinkle of Ajax to the blog example, you are going to allow your users to comment without reloading the page. The first thing that you need to do is to include the default JavaScript libraries that ship with Rails. Do this by modifying the articles.html.erb layout within the <head> tag as shown here:

<head>
  <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
  <title>The Rails Noob</title>
  <%= auto_discovery_link_tag :atom, formatted_articles_url(:atom) %>
  <%= stylesheet_link_tag 'site' %>
  <%= javascript_include_tag :defaults %>
</head>

The javascript_include_tag is a helper used to include JavaScript libraries. When used in a layout, it makes these libraries available to all of the view templates for which the layout applies. You can pass it the names (with or without extension) of JavaScript files located in public\javascripts and these will be included on each page for which the layout was rendered. In the highlighted line I used the :defaults symbol, which tells Rails to include both Prototype and script.aculo.us, as well as application.js in public\javascripts, if it exists. Passing :all will include all the JavaScript files in that directory and its subdirectories. In production, it is usually a good idea to cache all the JavaScript files into a single all.js file. This is done automatically for you by passing the :cache => true option to the helper, and will work as long as ActionController::Base.perform_caching is ...

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