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

5.5. Analyzing the Controller

Controllers are stored in app\controllers, so you can find your Articles controller in app\controllers\articles_controller.rb.

Note how the singular resource (that is, article) passed to the scaffold generator created a model that is singular and a controller that is plural. It is customary for RESTful controllers to be plural, because when you send a GET request for /articles or /articles.xml you are expecting to get a collection of items in return. Issuing a /article or /article.xml to obtain a series of articles doesn't seem as logical.

All of the code for your controller exists within the following class definition:

class ArticlesController < ApplicationController
  # ...
end

As you can see, the class ArticlesController inherits from ApplicationController. The Application controller is an application-wide controller, and all the controllers that you define inherit from it. You can find its definition in app\controllers\application.rb. ApplicationController in turn inherits from ActionController::Base.

Let's tackle each action within ArticlesController, one at a time.

5.5.1. index

The index action is there to list all the existing articles. This is how it is defined:

# GET /articles
# GET /articles.xml
def index
  @articles = Article.find(:all)

  respond_to do |format|
    format.html # index.html.erb
    format.xml  { render :xml => @articles }
  end
end

The two comments are there to remind you that a GET /articles or GET /articles.xml request would lead to ...

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