From: Edward Kenworthy Date: 2006-06-08T23:53:36+09:00 Subject: Macros and macro expansion 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/.