# How to reference a select\_tag within a form

**URL:** <https://www.ruby-forum.com/t/how-to-reference-a-select-tag-within-a-form/185570>\
**Category:** Rails\
**Created:** [March 22, 2010, 10:19pm UTC](https://www.ruby-forum.com/t/how-to-reference-a-select-tag-within-a-form/185570 "2010-03-22T22:19:27Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![RichardOnRails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e0b2c6/32.png) [@RichardOnRails](https://www.ruby-forum.com/u/RichardOnRails)\
**Post date:** [March 22, 2010, 10:19pm UTC](https://www.ruby-forum.com/t/how-to-reference-a-select-tag-within-a-form/185570/1 "2010-03-22T22:19:27Z")

</div>

Hi All,

Inside my app\views\expenses\new.html.erb file, I had the code:

\<% form\_for(@expense) do |f| %\>  
[snip]

\<%= f.label :vendor %\>  
 \<%= f.text\_field :vendor %\>

 true} %\> 

It brought up a list of vendor-names immediately under my Vendors  
textbox, which worked great as far as I was concerned. Then I tried  
to turn it into a real drop-down:

1. I added style=“display:none” to the div so that the drop-down was  
hidden when the page opened
2. I added \<%= button\_to\_function(“ShowList”,  
%\<page.toggle :vendor\_droplist\> ) %\> following the text\_field

Hiding the drop-down worked, but the button failed to restore it.  
Validating the resulting HTML revealed the a div is not permitted in  
the scope of a form.

To solve this I removed the

 opening and closing tags and:
1. added the id to the select\_tag:  
\<%= select\_tag “test” :id=“vendor\_droplist”,  
options\_for\_select(@current\_vendors.collect { |v|  
v.nickname }),  
{:multiple =\> true} %\>  
2 added it with a comma  
\<%= select\_tag “test”, :id=“vendor\_droplist”,  
options\_for\_select(@current\_vendors.collect { |v|  
v.nickname }),  
{:multiple =\> true} %\>

Neither these nor any other change I tried worked. So what’s the  
Rail’s way of solving this problem?

I’m running Rails 2.3.5, Ruby 1.8.6, WinXP-Pro/SP3, Firefox 3.6, MySQL  
5.0.37-community-nt, Mongrel.

Thanks in Advance,  
Richard

---

<div class="post-metadata">

**Author:** ![RichardOnRails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e0b2c6/32.png) [@RichardOnRails](https://www.ruby-forum.com/u/RichardOnRails)\
**Post date:** [March 22, 2010, 10:52pm UTC](https://www.ruby-forum.com/t/how-to-reference-a-select-tag-within-a-form/185570/2 "2010-03-22T22:52:13Z")

</div>

On 22 March 2010 21:18, RichardOnRails  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> \<div id="vendor\_droplist\> 1. I added style="display:none" to the div so that the drop-down was hidden when the page opened 2. I added \<%= button\_to\_function("ShowList", % ) %\> following the text\_field
> 
> Hiding the drop-down worked, but the button failed to restore it.  
> Validating the resulting HTML revealed the a div is not permitted in  
> the scope of a form.

You certainly can have divs inside a form. I think you must have  
misinterpreted the message. Can you roll your version control system  
back to the version that caused this and post the results of the  
validation and the bit of html causing the problem.

Colin

---

<div class="post-metadata">

**Author:** ![RichardOnRails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e0b2c6/32.png) [@RichardOnRails](https://www.ruby-forum.com/u/RichardOnRails)\
**Post date:** [March 22, 2010, 11:34pm UTC](https://www.ruby-forum.com/t/how-to-reference-a-select-tag-within-a-form/185570/3 "2010-03-22T23:34:21Z")

</div>

Hi Colin,

I still don’t have subversion not git working. But I pretty sure that  
[http://www.pastie.org/881730](http://www.pastie.org/881730) presents it all: three aspects of “new  
expenses”: the .erb, the htm and the validator’s.

A second look a the validation failure led me to think that  
substituting object for div would solve my problem. It doesn’t run  
any differently. I haven’t sought the validator’s opinion yet.

Regards,  
Richard

---

<div class="post-metadata">

**Author:** ![RichardOnRails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e0b2c6/32.png) [@RichardOnRails](https://www.ruby-forum.com/u/RichardOnRails)\
**Post date:** [March 23, 2010, 8:34am UTC](https://www.ruby-forum.com/t/how-to-reference-a-select-tag-within-a-form/185570/4 "2010-03-23T08:34:36Z")

</div>

Hi Frederick,

As I mentioned to Colin, I would start a new thread on this question,  
which is at  
[http://groups.google.com/group/rubyonrails-talk/tree/browse\_frm/thread/d0ca35d39de37478/cd6ed92bd974e311?rnum=1&\_done=%2Fgroup%2Frubyonrails-talk%2Fbrowse\_frm%2Fthread%2Fd0ca35d39de37478%3F#doc\_cd6ed92bd974e311](http://groups.google.com/group/rubyonrails-talk/tree/browse_frm/thread/d0ca35d39de37478/cd6ed92bd974e311?rnum=1&_done=%2Fgroup%2Frubyonrails-talk%2Fbrowse_frm%2Fthread%2Fd0ca35d39de37478%3F#doc_cd6ed92bd974e311)

Thanks for looking into my problem.

But I just noticed that there is another response on this thread.

> button\_to\_function creates a form, which would result in a form nested inside a form, which isn’t allowed.

Wow. As I mentioned on the other thread, I posted code on that  
seemed clean from a Rails perspective and from an HTML perspective.

So, if button\_to\_function is inappropriate for forms, can I specify  
an image that, when clicked, would toggle a page with the appropriate  
id specified? Is there an example on the web that you’d recommend?

Best wishes,  
Richard

BTW, my current code, with HTML generated and Validation results is at  
[http://www.pastie.org/882256](http://www.pastie.org/882256)

On Mar 22, 7:00 pm, Frederick C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![RichardOnRails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e0b2c6/32.png) [@RichardOnRails](https://www.ruby-forum.com/u/RichardOnRails)\
**Post date:** [March 23, 2010, 9:12am UTC](https://www.ruby-forum.com/t/how-to-reference-a-select-tag-within-a-form/185570/5 "2010-03-23T09:12:04Z")

</div>

On 23 Mar, 07:33, RichardOnRails  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Wow. As I mentioned on the other thread, I posted code on that  
> seemed clean from a Rails perspective and from an HTML perspective.
> 
> So, if button\_to\_function is inappropriate for forms, can I specify  
> an image that, when clicked, would toggle a page with the appropriate  
> id specified? Is there an example on the web that you’d recommend?

Sorry, slight mixup up; button\_to creates a form, but looks like  
button\_to\_remote doesn’t. Your javscript fragment is incorrect though

- the () on a method call aren’t optional in javascript, and what  
you’ve got there looks more like RJS than javascript - the whole  
page[] construct is an RJS-ism. If you want to use RJS then you need  
to use the block form of button\_to\_function

Fred

---

<div class="post-metadata">

**Author:** ![RichardOnRails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e0b2c6/32.png) [@RichardOnRails](https://www.ruby-forum.com/u/RichardOnRails)\
**Post date:** [March 23, 2010, 12:01am UTC](https://www.ruby-forum.com/t/how-to-reference-a-select-tag-within-a-form/185570/6 "2010-03-23T00:01:52Z")

</div>

On Mar 22, 9:18 pm, RichardOnRails  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> the scope of a form.

button\_to\_function creates a form, which would result in a form nested  
inside a form, which isn’t allowed.

Fred

---

<div class="post-metadata">

**Author:** ![RichardOnRails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e0b2c6/32.png) [@RichardOnRails](https://www.ruby-forum.com/u/RichardOnRails)\
**Post date:** [March 23, 2010, 10:05am UTC](https://www.ruby-forum.com/t/how-to-reference-a-select-tag-within-a-form/185570/7 "2010-03-23T10:05:56Z")

</div>

On 22 March 2010 22:32, RichardOnRails  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Hi Colin,
> 
> I still don’t have subversion not git working.

Well the answer to that problem is obvious.

Colin

---

<div class="post-metadata">

**Author:** ![RichardOnRails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e0b2c6/32.png) [@RichardOnRails](https://www.ruby-forum.com/u/RichardOnRails)\
**Post date:** [March 23, 2010, 6:05pm UTC](https://www.ruby-forum.com/t/how-to-reference-a-select-tag-within-a-form/185570/8 "2010-03-23T18:05:55Z")

</div>

Thanks very much for taking another look at my problem.

> If you want to use RJS then you need  
> to use the block form of button\_to\_function

Here’s the best my brain could come up with  
\<%# = button\_to\_function(“ShowList”,  
%\<page[“vendor\_droplist”].toggle\> ) %\>  
\<%= button\_to\_function(“ShowList”)  
{ page[“vendor\_droplist”].toggle } %\>  
but compilation of new.html.erb with that change gives me:

===  
undefined local variable or method `page’ for #\<ActionView::Base:  
0x467eaf4\>

Extracted source (around line #17):

# 14: \<%= f.label :vendor %\> 15: \<%= f.text\_field :vendor %\> 16: \<%# = button\_to\_function(“ShowList”, %\<page[“vendor\_droplist”].toggle\> ) %\> 17: \<%= button\_to\_function(“ShowList”) { page[“vendor\_droplist”].toggle } %\> 18: 19: 20: \<%= select\_tag “list”,

## If it’s not too much trouble, can you point me to website that provides detail on the alternative forms, or even better, show me a correct form of #17 above. Sorry for being so obtuse … I’m a Rails nubie, but aspiring higher 🙂

Richard

On Mar 23, 4:11 am, Frederick C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
