# Dynamic variable names?

**URL:** <https://www.ruby-forum.com/t/dynamic-variable-names/48961>\
**Category:** Rails\
**Created:** [November 27, 2005, 9:06pm UTC](https://www.ruby-forum.com/t/dynamic-variable-names/48961 "2005-11-27T21:06:45Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![railsonly](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/c89c15/32.png) [@railsonly](https://www.ruby-forum.com/u/railsonly)\
**Post date:** [November 27, 2005, 9:06pm UTC](https://www.ruby-forum.com/t/dynamic-variable-names/48961/1 "2005-11-27T21:06:45Z")

</div>

Hi,  
In Ruby is there a way to create variable names that are dynamic? An  
example would be I have a loop and I want to name the variables “foo\_0”,  
“foo\_1”, etc. Obviously in this case I don’t want to use an Array.  
Thanks,  
Frank

---

<div class="post-metadata">

**Author:** ![railsonly](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/c89c15/32.png) [@railsonly](https://www.ruby-forum.com/u/railsonly)\
**Post date:** [November 27, 2005, 11:00pm UTC](https://www.ruby-forum.com/t/dynamic-variable-names/48961/2 "2005-11-27T23:00:11Z")

</div>

I take it there’s a very good reason why you can’t have an array  
called ‘foo’, and store your values in foo[0], foo[1] and so on?

- james

---

<div class="post-metadata">

**Author:** ![railsonly](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/c89c15/32.png) [@railsonly](https://www.ruby-forum.com/u/railsonly)\
**Post date:** [November 27, 2005, 11:12pm UTC](https://www.ruby-forum.com/t/dynamic-variable-names/48961/3 "2005-11-27T23:12:19Z")

</div>

On 27 Nov 2005, at 20:04, Frank K. wrote:

> In Ruby is there a way to create variable names that are dynamic?  
> An example would be I have a loop and I want to name the variables  
> “foo\_0”, “foo\_1”, etc. Obviously in this case I don’t want to use  
> an Array.

It sounds /exactly/ like you want to use an array here… why  
wouldn’t you use an array?

## Yours, Craig

Craig W. | t: +44 (0)131 516 8595 | e: removed\_email\_address@domain.invalid  
[Xeriom.NET](http://Xeriom.NET) | f: +44 (0)709 287 1902 | w: [http://xeriom.net](http://xeriom.net)

---

<div class="post-metadata">

**Author:** ![railsonly](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/c89c15/32.png) [@railsonly](https://www.ruby-forum.com/u/railsonly)\
**Post date:** [November 28, 2005, 12:16am UTC](https://www.ruby-forum.com/t/dynamic-variable-names/48961/4 "2005-11-28T00:16:45Z")

</div>

Hi Frank,

You could do:

eval("#{variable\_name} = #[value}")

or, for instance variables:

self.instance\_variable\_set(:@var\_name, value)

Cheers!

-DF

---

<div class="post-metadata">

**Author:** ![railsonly](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/c89c15/32.png) [@railsonly](https://www.ruby-forum.com/u/railsonly)\
**Post date:** [November 28, 2005, 6:23pm UTC](https://www.ruby-forum.com/t/dynamic-variable-names/48961/5 "2005-11-28T18:23:33Z")

</div>

I’m not using an array because text\_field does not understand arrays, to  
be  
more specific you can’t do a send of a [n] accessor. I am creating a  
page  
where you can create multiple records and the only way to do this and  
have  
values still be present on the page if there is an error is to use  
variables  
like foo\_0, foo\_1, foo\_2, etc.

---

<div class="post-metadata">

**Author:** ![railsonly](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/c89c15/32.png) [@railsonly](https://www.ruby-forum.com/u/railsonly)\
**Post date:** [November 28, 2005, 6:23pm UTC](https://www.ruby-forum.com/t/dynamic-variable-names/48961/6 "2005-11-28T18:23:33Z")

</div>

Hi David,  
Thanks, I’ll try that out.  
-Frank
