# Instance variable access with different methods in one controller and view

**URL:** <https://discuss.rubyonrails.org/t/instance-variable-access-with-different-methods-in-one-controller-and-view/63896>\
**Category:** rubyonrails-talk\
**Created:** [May 16, 2012, 6:13am UTC](https://discuss.rubyonrails.org/t/instance-variable-access-with-different-methods-in-one-controller-and-view/63896 "2012-05-16T06:13:22Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![amruby](https://avatars.discourse-cdn.com/v4/letter/a/bbe5ce/32.png) [@amruby](https://discuss.rubyonrails.org/u/amruby)\
**Post date:** [May 16, 2012, 6:13am UTC](https://discuss.rubyonrails.org/t/instance-variable-access-with-different-methods-in-one-controller-and-view/63896/1 "2012-05-16T06:13:22Z")

</div>

i have one view onepage.html.erb, also have one controller onepages

class onepages\_controller

def show

@name = “name1”

render ‘onepages/onepage’

end

def onepage

// have to access show method variables

end

end

When i click on the onepage.html.erb. that have one button when i click on that button the show method will execute, after that i have to get that variables into onepage…How to get that variable?

---

<div class="post-metadata">

**Author:** ![azizmb.in](https://avatars.discourse-cdn.com/v4/letter/a/58956e/32.png) [@azizmb.in](https://discuss.rubyonrails.org/u/azizmb.in)\
**Post date:** [May 16, 2012, 6:21am UTC](https://discuss.rubyonrails.org/t/instance-variable-access-with-different-methods-in-one-controller-and-view/63896/2 "2012-05-16T06:21:14Z")

</div>

Instance variables in Rails controllers are only shared for a request - response cycle. Ie, you cannot access variables set in the show action from the onepage action. You will need to reinitialise them. If you want to keep things DRY, put it in a before filter.

eg:

class onepages\_controller before\_filter :filter\_name

def show

render ‘onepages/onepage’

end

def onepage

// have to access show method variables

end

protected

def filter\_name @name = “name1” end

end

You will now have @name in both show and onepage.

---

<div class="post-metadata">

**Author:** ![Colin\_Law1](https://avatars.discourse-cdn.com/v4/letter/c/91b2a8/32.png) [@Colin\_Law1](https://discuss.rubyonrails.org/u/Colin_Law1)\
**Post date:** [May 16, 2012, 6:29am UTC](https://discuss.rubyonrails.org/t/instance-variable-access-with-different-methods-in-one-controller-and-view/63896/3 "2012-05-16T06:29:37Z")

</div>

This might be helpful [http://ruby.11.n6.nabble.com/method-value-passing-in-rails-td4897203.html](http://ruby.11.n6.nabble.com/method-value-passing-in-rails-td4897203.html)

Colin

---

<div class="post-metadata">

**Author:** ![amruby](https://avatars.discourse-cdn.com/v4/letter/a/bbe5ce/32.png) [@amruby](https://discuss.rubyonrails.org/u/amruby)\
**Post date:** [May 16, 2012, 6:56am UTC](https://discuss.rubyonrails.org/t/instance-variable-access-with-different-methods-in-one-controller-and-view/63896/4 "2012-05-16T06:56:01Z")

</div>

> Instance variables in Rails controllers are only shared for a request - response cycle. Ie, you cannot access variables set in the show action from the onepage action. You will need to reinitialise them. If you want to keep things DRY, put it in a before filter.
> 
> eg:
> 
> class onepages\_controller before\_filter :filter\_name

> 

> def show

> render ‘onepages/onepage’

> end

> 

> def onepage

> // have to access show method variables

> end
> 
> protected
> 
> def filter\_name @name = “name1” end

> end
> 
> You will now have @name in both show and onepage.
> 
> > i have one view onepage.html.erb, also have one controller onepages

> > class onepages\_controller

> >

> > def show

> > @name = “name1”

> > render ‘onepages/onepage’

> > end

> >

> > def onepage

> > // have to access show method variables

> > end

> > end

> >

Thanks, But here now am facing another problem

class onepages\_controller

**before\_filter :show**

def onepage

// have to access show method variables

end

protected

def show

**// here read the value from user via textfield**

render ‘onepages/onepage’

end

end

In my code, when i click on the onepage.html.erb, that have one textfield and button, where i have to read one value from user. so if i given like the above code, first check the before\_filter,the show function will execute, but the show function doesn’t getting the textfield value, Page will give error. Have any way to do that?

---

<div class="post-metadata">

**Author:** ![Colin\_Law1](https://avatars.discourse-cdn.com/v4/letter/c/91b2a8/32.png) [@Colin\_Law1](https://discuss.rubyonrails.org/u/Colin_Law1)\
**Post date:** [May 16, 2012, 8:00am UTC](https://discuss.rubyonrails.org/t/instance-variable-access-with-different-methods-in-one-controller-and-view/63896/5 "2012-05-16T08:00:34Z")

</div>

Sorry, I have no idea what you mean.

Colin
