From: "Marcin Mielżyński" Date: 2006-03-09T05:58:45+09:00 Subject: Re: Newbie: Rails Controller Attribute Scope tim.hennekey@gmail.com wrote: > I'm having a hard time figguring out what is wrong with my controller. > I create an attribure, @processes in the method index. I then want to > access the attribute in the same class, in another method > process_status. I get an error: > > NoMethodError in Processes#process_status > You have a nil object when you didn't expect it! > You might have expected an instance of Array. > The error occured while evaluating nil.sizeRAILS_ROOT: > ./script/../config/.. > > So it looks to me that the instance of ProcessController is changing > and the attribute is nil? Is there a way around this? Why does Rails > create a new controller for each invocation of a method? > In Rails unlike in Struts a new (statefull) instance of your Controller is created on each request, so you can acces instance variables between methods only in a single request process. If you want to save a state (i.e. share values between requests) use session instead. I prefer this type of state management since you dont have to pass patameters between methods, and creation of new instance on each request lets you forget about purging them :D (GC wouldnt be able to collect them) lopex