Module: ActionController::Scaffolding::ClassMethods

Module | ActionController::Scaffolding::ClassMethods
In: | lib/action_controller/scaffolding.rb

Scaffolding is a way to quickly put an Active Record class online by providing a series of standardized actions for listing, showing, creating, updating, and destroying objects of the class. These standardized actions come with both controller logic and default templates that through introspection already know which fields to display and which input types to use. Example:

     class WeblogController < ActionController::Base
       scaffold :entry
     end

This tiny piece of code will add all of the following methods to the controller:

     class WeblogController < ActionController::Base
       verify :method => :post, :only => [ :destroy, :create, :update ],
              :redirect_to => { :action => :list }

       def index
         list
       end

       def list
         @entries = Entry.find_all
         render_scaffold "list"
       end

       def show
         @entry = Entry.find(params[:id])
         render_scaffold
       end

       def destroy
         Entry.find(params[:id]).destroy
         redirect_to :action => "list"
       end

       def new
         @entry = Entry.new
         render_scaffold
       end

       def create
         @entry = Entry.new(params[:entry])
         if @entry.save
           flash[:notice] = "Entry was successfully created"
           redirect_to :action => "list"
         else
           render_scaffold('new')
         end
       end

       def edit
         @entry = Entry.find(params[:id])
         render_scaffold
       end

       def update
         @entry = Entry.find(params[:id])
         @entry.attributes = params[:entry]

         if @entry.save
           flash[:notice] = "Entry was successfully updated"
           redirect_to :action => "show", :id => @entry
         else
           render_scaffold('edit')
         end
       end
     end

The `render_scaffold` method will first check to see if you‘ve made your own template (like "weblog/show.rhtml" for the show action) and if not, then render the generic template for that action. This gives you the possibility of using the scaffold while you‘re building your specific application. Start out with a totally generic setup, then replace one template and one action at a time while relying on the rest of the scaffolded templates and actions.

### Methods

scaffold

### Public Instance methods

scaffold(model_id, options = {})

Adds a swath of generic CRUD actions to the controller. The `model_id` is automatically converted into a class name unless one is specifically provide through `options[:class_name]`. So `scaffold :post` would use Post as the class and @post/@posts for the instance variables.

It‘s possible to use more than one scaffold in a single controller by specifying `options[:suffix] = true`. This will make `scaffold :post, :suffix => true` use method names like list_post, show_post, and create_post instead of just list, show, and post. If suffix is used, then no index method is added.

[Validate]