# Dynamic drop down for subcategory based on 'On change' of ca

**URL:** <https://www.ruby-forum.com/t/dynamic-drop-down-for-subcategory-based-on-on-change-of-ca/168488>\
**Category:** Deployment\
**Created:** [May 21, 2009, 12:32pm UTC](https://www.ruby-forum.com/t/dynamic-drop-down-for-subcategory-based-on-on-change-of-ca/168488 "2009-05-21T12:32:36Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![devirv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/9de053/32.png) [@devirv](https://www.ruby-forum.com/u/devirv)\
**Post date:** [May 21, 2009, 12:32pm UTC](https://www.ruby-forum.com/t/dynamic-drop-down-for-subcategory-based-on-on-change-of-ca/168488/1 "2009-05-21T12:32:36Z")

</div>

Hi,

I am new to ror. I want to show ‘Dynamic drop down for subcategory based  
on ‘On change’ of category’ and below is the code I used. But I can make  
the sub category drop doen to be filtered based on category. Please any  
one suggest…

## list.rhtml

\<%= render :partial =\> “subcategory”, :locals =\> {:category =\>  
@category}%\>

| Category Name | \<%= collection\_select(:categories,:id,@categories,:id,:category\_name, {:onChange =\> "new Ajax.Updater('subcategories','update\_subcategories/' + this[this.selectedIndex].value,{asynchronous:true, evalScripts:true});"})%\> |

## \_subcategory.html
Sub Category Name \<%= collection\_select(:subcategories,:id,@subcategories,:id,:scategory\_name)%\>
## category\_controller

class CategoryController \< ApplicationController

def list  
@categories = Category.find(:all)  
@subcategories = Subcategory.find(:all)  
end

def update\_scategories  
category = Category.find(params[:category\_id])  
subcategories = category.subcategories

```
#render :partial => "subcategory", :locals => {:category =>

```

category}

```
render :update do |page|
  page.replace_html 'subcategories', :partial => 'subcategories',

```

:object =\> subcategories  
end  
end  
end

---

<div class="post-metadata">

**Author:** ![devirv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/9de053/32.png) [@devirv](https://www.ruby-forum.com/u/devirv)\
**Post date:** [May 22, 2009, 1:48pm UTC](https://www.ruby-forum.com/t/dynamic-drop-down-for-subcategory-based-on-on-change-of-ca/168488/2 "2009-05-22T13:48:19Z")

</div>

Devi Rv wrote:  
Hi,

I am new to ror. I want to show ‘Dynamic drop down for subcategory  
based  
on ‘On change’ of category’ and below is the code I used. But I can’t  
make  
the sub category drop down to be filtered based on category. Please any  
one suggest…

## list.rhtml

```
<%= render :partial => "subcategory", :locals => {:category =>

```

@category}%\>

| Category Name | \<%= collection\_select(:categories,:id,@categories,:id,:category\_name, {:onChange =\> "new Ajax.Updater('subcategories','update\_subcategories/' + this[this.selectedIndex].value,{asynchronous:true, evalScripts:true});"})%\> |

## \_subcategory.html
 Sub Category Name \<%= collection\_select(:subcategories,:id,@subcategories,:id,:scategory\_name)%
## category\_controller

class CategoryController \< ApplicationController

def list  
@categories = Category.find(:all)  
@subcategories = Subcategory.find(:all)  
end

def update\_scategories  
category = Category.find(params[:category\_id])  
subcategories = category.subcategories

```
 #render :partial => "subcategory", :locals => {:category =>

```

category}

```
 render :update do |page|
   page.replace_html 'subcategories', :partial => 'subcategories',

```

:object =\> subcategories  
end  
end  
end

---

<div class="post-metadata">

**Author:** ![devirv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/9de053/32.png) [@devirv](https://www.ruby-forum.com/u/devirv)\
**Post date:** [May 25, 2009, 10:53am UTC](https://www.ruby-forum.com/t/dynamic-drop-down-for-subcategory-based-on-on-change-of-ca/168488/3 "2009-05-25T10:53:16Z")

</div>

Hi

With the below code I able to solve the above issue

## view page

\<%= javascript\_include\_tag “prototype” %\>

\<%= collection\_select :category,  
:id, @categories,  
:id, :category\_name,  
{ :include\_blank =\> false},  
{:onchange =\> remote\_function(:url =\>  
{:action =\> ‘say\_hello’},  
:with =\> “‘id=’ + this.value”,  
:update =\> “mydiv”)}

%\>

\<%= render :partial =\> "subcategory/subcategory", :locals =\> {:category =\>Category.find(:all)}%\>

## controller

def say\_hello  
@subcategories = Subcategory.find\_by\_sql(“select \* from  
subcategories where category\_id=”+params[:id])  
render :partial =\> “subcategory/subcategory” ,:id=\>@id  
end
