From: cammo Date: 2007-04-17T21:30:06+09:00 Subject: Re: iterate through an array of method names to an object But also the send method will expect to get a symbol not a string so you'll need to do something like functions.each do |funk| funk.to_sym puts name_o_my_object.send(funk) end I tried that in irb and it worked so fingers crossed should work for you too. Cam On Apr 17, 7:16 am, Stefano Crocco wrote: > Alle luned� 16 aprile 2007, Skye Weir-mathewes ha scritto: > > > > > I've been trying to create a iterator that will run through and array of > > method names, sending each one to an object. For some reason the object > > doesn't like the method names if I send them via an iterator, but if I > > spell each one out, it works fine. When I try to use the iterator I get > > and error indicating that ruby doesn't think my method names actually > > name a method. > > > Here's some of my code: > > > functions = ["addHeadersAndFooters", "addListNameToSubject", "admin", > > "allowCrossPosting ", "allowDuplicatePosts ", "allowInfo ", > > "anyoneCanPost "] > > > functions.each do |funk| > > puts name_o_my_object.funk > > end > > > gives me the following error: > > > undefined method `funk' for # > > (NoMethodError) > > > but if I write somthing like: > > > functions.each do |funk| > > puts name_o_my_object.addHeadersAndFooters > > end > > > the iterator works fine, so... what's up with that? > > In the first case, you write name_o_my_object.funk. In this case, ruby tries > to call a method called funk on the object name_o_my_object. What you need to > do is: > > puts name_o_my_object.send(funk) > > I hope this helps > > Stefano