I was looking at my controller code (Rails) and the 
edit/create/update/new for
each are practically identical. So first I DRY'd the four methods in
each controller to just one and then I decided to write a single macro
for all my controllers.

This is the macro:

  def self.edit_action_for(model, options = {})
    model_class = Object.const_get(model)
    define_method(:edit) do
      edit_code = lambda do
        @thing = model_class.find_by_id(params[:id]) || model_class.new
        if request.post?
          @thing.attributes = params[:impactable_area]
          if @thing.save
            flash[:notice] = "#{model.humanize} successfully saved."
            redirect_to :action => 'list'
          end
        end
      end
    end
  end

Then I expected this

  edit_action_for :ImpactableArea

to create my "edit" method.

Problem is that it doesn't :-(

So then I looked to see how I could do a macro expansion (as you can in
Lisp) to see what's being produced and I couldn't find anything...

HELP!

Edward

-- 
Posted via http://www.ruby-forum.com/.