Browse the Ruby on Rails Community.

You are here: Browse Railsplugins Scaffolding

Scaffolding

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:

The render_scaffold method will first check to see if you’ve made your own template (like “weblog/show.erb” 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.

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 }
end
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]
end
if @entry.save
  flash[:notice] = "Entry was successfully updated" 
  redirect_to :action => "show", :id => @entry
else
  render_scaffold('edit')
end

Copyright© 2004-2007 David Heinemeier Hansson, released under the MIT license

NOTE: This description has been extracted from the Plugin README and so the formatting may need updating to make browser friendly

Users


See all 2 member details


Membership

+ Join this railsplugin

Record Maintainer

'None'