# About dynamic select

**URL:** <https://www.ruby-forum.com/t/about-dynamic-select/143564>\
**Category:** Rails\
**Created:** [July 20, 2008, 3:59pm UTC](https://www.ruby-forum.com/t/about-dynamic-select/143564 "2008-07-20T15:59:48Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![daociyiyou](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/0ea827/32.png) [@daociyiyou](https://www.ruby-forum.com/u/daociyiyou)\
**Post date:** [July 20, 2008, 3:59pm UTC](https://www.ruby-forum.com/t/about-dynamic-select/143564/1 "2008-07-20T15:59:48Z")

</div>

I want to design a dynamic select container.That is :when a user selects  
a province,there is a city select container dropping out.Then when a  
user select a  
city,there is a city section container dropping out.I use the  
observe\_field to manage these.  
1 controller:  
def register  
@user=User.new(params[:user])  
if params[:user]&&@user.save  
session[:login]=@user.id  
flash[:register]="#{@user.name}å·²åˆ›å»º"  
redirect\_to :action=\>“upanel”  
else  
render :action=\>“register”  
end  
end  
def get\_region\_kind  
@user=User.new  
if params[:region\_kind]==“çœ”  
render(:template=\>“login/province”)  
elsif params[:region\_kind]==“ç›´è¾–å¸‚”  
render(:template=\>“login/direct\_city”)  
elsif params[:region\_kind]==“ç‰¹åˆ«è¡Œæ”¿åŒº”  
render(:template=\>“login/special\_area”)  
end  
end  
def get\_capital  
@user=User.new  
capital\_select=params[:capital\_select]  
case capital\_select  
when “çŸ³å®¶åº„” then @section=User::SHIJIAZHUANG  
when “ç§¦çš‡å²›” then @section=User::QINGHUANGDAO  
…  
end  
end  
2 view:  
register.rhtml  
\<%form\_for :user,:url=\>{:action=\>“register”},:html=\>{:multipart=\>true}  
do |f|-%\>

ç…§ç‰‡ \<%=f.file\_field "file"-%\>å›¾ç‰‡åç§°ä½¿ç”¨ä¸­æ–‡ä»¥å¤–å­—ç¬¦

è¡Œæ”¿åŒºåˆ’ç±»åˆ« \<%=select\_tag "regionalism",options\_for\_select(["è¯·é€‰æ‹©","çœ","ç›´è¾–å¸‚","ç‰¹åˆ«è¡Œæ”¿åŒº"])-%\>

\<%=observe\_field "regionalism",:update=\>"region",:url=\>{:action=\>"get\_region\_kind"},:with=\>"region\_kind"-%\> 

 \<%=submit\_tag "æäº¤",:disable\_with=\>"è¯·ç¨å€™..."-%\> \<%end-%\>

province.rhtml

çœ \<%=select "user","province",User::PROVINCE-%\>

å¸‚ \<%=select "user","city",User::CAPITAL-%\>

\<%=observe\_field "user\_city",:update=\>"user\_section",:url=\>{:action=\>"get\_capital"},:with=\>"capital\_select"-%\>

åŒº \<%=select "user","section",User::SHIJIAZHUANG-%\>

get\_capital.rhtml  
\<%=select “user”,“section”,@section-%\>

Now,when i select province,the codes work.But when select the city,there  
is blank city section select container.It is blank and not what i want.I  
think the model should be right.so where is wrong? We can not use the  
several user objects in the register.rhtml file to register an user? Or  
there is another way to manage my question.

---

<div class="post-metadata">

**Author:** ![daociyiyou](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/0ea827/32.png) [@daociyiyou](https://www.ruby-forum.com/u/daociyiyou)\
**Post date:** [July 20, 2008, 4:21pm UTC](https://www.ruby-forum.com/t/about-dynamic-select/143564/2 "2008-07-20T16:21:21Z")

</div>

On Jul 20, 2:59 pm, Guo Y. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> \<%=observe\_field  
> “user\_city”,:update=\>“user\_section”,:url=\>{:action=\>“get\_capital”},:with=\>" capital\_select"-%\>
> 
> Çø \<%=select "user","section",User::SHIJIAZHUANG-%\>
> 
> get\_capital.rhtml  
> \<%=select “user”,“section”,@section-%\>

Think about what’s going to happen here: the inside of user\_section  
will get replaced by what’s rendered.  
So you’ll end up with  
\<select id=“user\_section” …\>  
\<select id=“user\_section” …\>  
…

which doesn’t look good.

Fred

---

<div class="post-metadata">

**Author:** ![daociyiyou](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/0ea827/32.png) [@daociyiyou](https://www.ruby-forum.com/u/daociyiyou)\
**Post date:** [July 20, 2008, 5:30pm UTC](https://www.ruby-forum.com/t/about-dynamic-select/143564/3 "2008-07-20T17:30:07Z")

</div>

Thank you Frederick C…I did not pay attention to replacing the  
inner html.  
Thank you very much!
