Marcin Mielzynski
3/8/2006 8:56:00 PM
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