# One question about Dynamic Select Menus

**URL:** <https://www.ruby-forum.com/t/one-question-about-dynamic-select-menus/156349>\
**Category:** Rails\
**Created:** [December 25, 2008, 6:20am UTC](https://www.ruby-forum.com/t/one-question-about-dynamic-select-menus/156349 "2008-12-25T06:20:50Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![jette](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/d9b06d/32.png) [@jette](https://www.ruby-forum.com/u/jette)\
**Post date:** [December 25, 2008, 6:20am UTC](https://www.ruby-forum.com/t/one-question-about-dynamic-select-menus/156349/1 "2008-12-25T06:20:50Z")

</div>

Hi all,  
Merry X’mas first 🙂

I have “Product”,“Category”,“Subcategory” 3 Model, and when new  
“Product”, I want to use “Dynamic Select Menus” just like Ryan  
mentioned in [#88 Dynamic Select Menus - RailsCasts](http://railscasts.com/episodes/88-dynamic-select-menus)

I have everything down. But when I visit the js file, I got following  
error

Showing app/views/javascripts/dymanic\_categories.js.erb where line #3  
raised:

You have a nil object when you didn’t expect it!  
You might have expected an instance of Array.  
The error occurred while evaluating nil.each

Extracted source (around line #3):

1: // javascripts/dynamic\_categories.js.erb  
2: var subcategories = new Array();  
3: \<% for subcategory in @subcategories -%\>  
4: categories.push(new Array(\<%= category.id %\>, ‘\<%=h  
subcategory.subcategory\_name %\>’, \<%= subcategory.id %\>));  
5: \<% end -%\>

Anyone got an idea, how does it happen?

---

<div class="post-metadata">

**Author:** ![jette](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/d9b06d/32.png) [@jette](https://www.ruby-forum.com/u/jette)\
**Post date:** [December 25, 2008, 8:05pm UTC](https://www.ruby-forum.com/t/one-question-about-dynamic-select-menus/156349/2 "2008-12-25T20:05:52Z")

</div>

What does the controller set @subcategories to before rendering the  
javascript?

–wpd

---

<div class="post-metadata">

**Author:** ![jette](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/d9b06d/32.png) [@jette](https://www.ruby-forum.com/u/jette)\
**Post date:** [December 26, 2008, 9:00am UTC](https://www.ruby-forum.com/t/one-question-about-dynamic-select-menus/156349/3 "2008-12-26T09:00:46Z")

</div>

Hi Partrick,  
Before the controller rendering the Javascript,  
@subcategories = Subcategory.find(:all)

---

<div class="post-metadata">

**Author:** ![jette](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/d9b06d/32.png) [@jette](https://www.ruby-forum.com/u/jette)\
**Post date:** [December 26, 2008, 1:02pm UTC](https://www.ruby-forum.com/t/one-question-about-dynamic-select-menus/156349/4 "2008-12-26T13:02:33Z")

</div>

> Showing app/views/javascripts/dymanic\_categories.js.erb where line #3  
> raised:

“dymanic”?

---

<div class="post-metadata">

**Author:** ![jette](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/d9b06d/32.png) [@jette](https://www.ruby-forum.com/u/jette)\
**Post date:** [December 28, 2008, 11:17am UTC](https://www.ruby-forum.com/t/one-question-about-dynamic-select-menus/156349/5 "2008-12-28T11:17:04Z")

</div>

Hey, Eric  
Thank you very much for help.  
I checked my codes again, yes I made a typo here, it should be  
“dynamic\_categories” here  
And now when I visit app/views/javascripts/dynamic\_categories.js.erb I  
can get the array

But, question comes again ☹

I can get category and subcategory list in my item/new view  
But, when I change the value of category the value of subcategory  
doesn’t change!

I checked with web inspector, I got this error message"TypeError:  
Value undefined (result of expression document.observe) is not  
object."  
It seems my result of document.observe is not correct?

How can I fix it?

---

<div class="post-metadata">

**Author:** ![jette](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/d9b06d/32.png) [@jette](https://www.ruby-forum.com/u/jette)\
**Post date:** [December 28, 2008, 5:52pm UTC](https://www.ruby-forum.com/t/one-question-about-dynamic-select-menus/156349/6 "2008-12-28T17:52:10Z")

</div>

OK, guys  
Finally I figured it out.  
I missed the \<%= javascript\_include\_tag :defaults %\> in my layout.  
Now everything goes fine.  
Thank you very much for your help.
