11.4. Charts

There are several different charting tools available for Rails — some use Flash, and others use just CSS and HTML. This section focuses on two graph packages that build on top of RMagick.

11.4.1. Gruff

The more traditional chart package is called Gruff, written by Geoffrey Grosenbach. It is Ruby built on top of RMagick, and it offers the typical variety of bar, line, area, and pie charts. Gruff is available as a Ruby gem or as a Rails plugin. The plugin option adds a generator to create a controller for your chart. You can install the Gruff plugin as follows:

$ script/plugin install -x http://topfunky.net/svn/plugins/gruff

After the plugin is installed, you should create a controller for the chart. RESTful thinking would imply one controller for each chart (with the controller in the show method); however, that one show method could take various arguments to serve the data in different forms, or to serve different slices of the data. You can generate a Gruff chart controller just by giving it a name.

11.4.1.1. Getting Started

To get Gruff to work, you're best off creating a separate controller for the graph data. Gruff provides the following migration to do so:

$ script/generate gruff CategoryGraphs

In a comment in the generated controller, Gruff recommends adding the following line to the routes.rb file:

map.graph "graph/:action/image.png", :controller => "category_graphs"

This line will match routes of the form graph/show/image.png. You could also try a RESTful ...

Get Professional Ruby on Rails™ now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.