Luke Galea
2005-Dec-30 22:06 UTC
metaprogramming in controller: accessing instance variables
Hi all,
I''m trying to move a bunch of methods out of a controller into a
library that I can include and call a class method to have it
dynamically add a bunch of methods to the controller.
The goal is to just add to each controller:
include UIEnhancements::SubList
sub_list ''Note'', ''incomplete''
and have the sub_list method create all the methods needed to support
the sub_list ui..
Where I am running into trouble is that I want the meta-programmed
functions to have access to the instance vars (ie: @somethingorother
or @params) just like the hard coded ones I had in the controller to
begin with..
I''ve tried accessing via: instance_eval, instance_variable_get,
eval.. all no good.
I have a file called "sub_list_system.rb" in the lib dir:
module UIEnhancements
module SubList
def self.included(mod)
mod.extend(ClassMethods)
class_eval { helper :SubList }
end
module ClassMethods
def sub_list( model = ''Note'', parent =
''incomplete'' )
define_method("update_or_create_#{model.downcase.pluralize}")
do
#Some stuff
eval( "@#{parent}" ) = ''test''
end
end
end
end
Does anyone know how to deal with this?
Thanks in advance!