From: Nanfang Zhao Date: 2009-03-07T00:55:00+09:00 Subject: Re: Proper way to include module methods with dynamic code? --00163646d987d380880464753aa0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Methods in module will become the instance methods of the class which includes this module. make sure your before_filter is running properly, and @klass is defined. On Fri, Mar 6, 2009 at 9:25 AM, Web Manager wrote: > Hi, > > (This is in a Rails context, but I believe is much more of a Ruby > question so is posted here.) > > I've got an index method with some dynamic bits I'd like to place into a > module and include in several controllers: > > module MyApp::ListsControllerIndex > def index > self.instance_variable_set( "@#{@models_str}", @klass.find(:all) ) > > respond_to do |format| > format.html do > render 'shared/lists_index' > end > end > end # End index > end # End module > > (The instance variables @models_str and @klass are set by a > before_filter in the controller.) > > When I try to include this module into controllers via any combination > of include or extend, I either get: > > 1) a nil.find error as Ruby seems to try and execute/resolve @klass in > @klass.find when included rather than after the filters have run (seen > with include) > 2) the included method is not found (seen with extend) > > What I'd like is the method to be added to my controller class and be > sitting ready and waiting to evaluate the dynamic bits when called. (Or > said another way, for the included method to work successfully the same > way it does when it's defined directly in the controller or a superclass > of the controller.) > > I've read through include/extend docs but clearly need some additional > help. Any is much appreciated and thanks for your time! > > Cheers. > -- > Posted via http://www.ruby-forum.com/. > > --00163646d987d380880464753aa0--