Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
# In views def add_employee _form_for(@employee,R(AddEmployee)) end def edit_employee _form_for(@employee,R(EditEmployee,@employee.id)) end def show_employee h1 @employee.name end # In controllers module CRUDHelper module ClassMethods def create_template(model,options={}) @model = model.to_s @record = options[:record] || @model.downcase @post_route = options[:post_route] end attr_reader :model,:record,:post_route end end module AddTemplate def get instance_variable_set( "@#{self.class.record}", eval(self.class.model).new) render "add_#{self.class.model.downcase}" end def post eval(self.class.model).create(input) redirect R(eval(self.class.post_route.to_s)) #fix later end def self.included(base) base.extend(CRUDHelper::ClassMethods) end end module EditTemplate def get(eid) instance_variable_set( "@#{self.class.record}", eval(self.class.model).find(eid)) render "edit_#{self.class.model.downcase}" end def post(eid) eval(self.class.model).update(eid,input) redirect R(eval(self.class.post_route.to_s)) end def self.included(base) base.extend(CRUDHelper::ClassMethods) end end class AddEmployee < R '/employee/new' include AddTemplate create_template(:Employee, :post_route => :Admin) end class EditEmployee < R '/employee/edit/(\d+)' include EditTemplate create_template(:Employee, :post_route => :Admin) end class ShowEmployee < R '/employee/show/(\d+)' def get(eid) @employee = Employee.find(eid) render :show_employee end end class DeleteEmployee < R '/employee/delete/(\d+)' def get(eid) Employee.delete(eid) redirect Admin end end
This paste will be private.
From the Design Piracy series on my blog: