# Curious how params, flash etc work in rails?

**URL:** <https://www.ruby-forum.com/t/curious-how-params-flash-etc-work-in-rails/163887>\
**Category:** Rails\
**Created:** [March 25, 2009, 9:58pm UTC](https://www.ruby-forum.com/t/curious-how-params-flash-etc-work-in-rails/163887 "2009-03-25T21:58:11Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [March 25, 2009, 9:58pm UTC](https://www.ruby-forum.com/t/curious-how-params-flash-etc-work-in-rails/163887/1 "2009-03-25T21:58:11Z")

</div>

I am curious how stuff like params and flash work in the controller ?  
Typically an instance variable is something like  
@params, or maybe self.params. How does rails make params appear as if  
it’s an instance variable ?

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [March 25, 2009, 10:31pm UTC](https://www.ruby-forum.com/t/curious-how-params-flash-etc-work-in-rails/163887/2 "2009-03-25T22:31:35Z")

</div>

> I am curious how stuff like params and flash work in the controller ?  
> Typically an instance variable is something like  
> @params, or maybe self.params. How does rails make params appear as if  
> it’s an instance variable ?

I believe at one point params was an instance variable. And there was  
a method “params” that passed through to that instance. I also  
remember that this was changed awhile back and you should never ever  
use @params again. That it is no longer a simple instance variable.

As for how they work specifically, dig through the source 🙂

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [March 25, 2009, 10:36pm UTC](https://www.ruby-forum.com/t/curious-how-params-flash-etc-work-in-rails/163887/3 "2009-03-25T22:36:16Z")

</div>

On Wed, Mar 25, 2009 at 3:57 PM, removed\_email\_address@domain.invalid  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I am curious how stuff like params and flash work in the controller ?  
> Typically an instance variable is something like  
> @params, or maybe self.params. How does rails make params appear as if  
> it’s an instance variable ?

> irb
> 
> > o = Object.new  
> > =\> #Object:0xb7a3e000  
> > o.instance\_variable\_set( :@foo, ‘bar’ )  
> > =\> “bar”  
> > o.inspect  
> > =\> “#\<Object:0xb7a3e000 @foo=“bar”\>”

[http://www.ruby-doc.org/core/classes/Object.html#M000381](http://www.ruby-doc.org/core/classes/Object.html#M000381)

–  
Greg D.  
[http://destiney.com/](http://destiney.com/)

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [March 25, 2009, 11:08pm UTC](https://www.ruby-forum.com/t/curious-how-params-flash-etc-work-in-rails/163887/4 "2009-03-25T23:08:31Z")

</div>

ok,

offhand I’m not sure how to create a method foo that is used like an  
array so I can say foo[:id], but I’ll have to think about that or look  
through my books …

On Mar 25, 5:46 pm, Frederick C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [March 25, 2009, 10:46pm UTC](https://www.ruby-forum.com/t/curious-how-params-flash-etc-work-in-rails/163887/5 "2009-03-25T22:46:51Z")

</div>

On Mar 25, 8:57 pm, “removed\_email\_address@domain.invalid” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I am curious how stuff like params and flash work in the controller ?  
> Typically an instance variable is something like  
> @params, or maybe self.params

@params is an instance variable, but self.params is a method called  
params

> How does rails make params appear as if  
> it’s an instance variable ?

it doesn’t. It just defines a method called params (and one called  
flash etc…) on controllers. There use to be instance variables  
called @params, @flash that you could use interchangeably but use of  
those was deprecated and removed a while back.

Fred

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [March 25, 2009, 11:24pm UTC](https://www.ruby-forum.com/t/curious-how-params-flash-etc-work-in-rails/163887/6 "2009-03-25T23:24:20Z")

</div>

On Mar 25, 10:07 pm, Larz [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ok,
> 
> offhand I’m not sure how to create a method foo that is used like an  
> array so I can say foo[:id], but I’ll have to think about that or look  
> through my books …

There’s not much to it:

class Foo  
def initialize  
@hash = {}  
end

def   
@hash[key]  
end

def []=(key,value)  
@hash[key]=value  
end  
end

That’s not what’s happening with params though. That’s just a method  
that returns a hash.

Fred
