How to reference a select_tag within a form

Hi All,

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

<% form_for(@expense) do |f| %>
[snip]
  <p>
    <%= f.label :vendor %><br />
    <%= f.text_field :vendor %>
    <br />
    <div id="vendor_droplist>
  <%= select_tag "test",
        options_for_select(@current_vendors.collect { |v|
v.nickname }),
        {:multiple => true} %>
    </div>
  </p>

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 <div> 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

Hi All,

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

<% form_for(@expense) do |f| %>
[snip]
<p>
<%= f.label :vendor %><br />
<%= f.text_field :vendor %>
<br />
<div id="vendor_droplist>
<%= select_tag "test",
options_for_select(@current_vendors.collect { |v|
v.nickname }),
{:multiple => true} %>
</div>
</p>

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.

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

Hi Colin,

I still don't have subversion not git working. But I pretty sure that
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

button_to_function creates a form, which would result in a form nested
inside a form, which isn't allowed.

Fred

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

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

Hi Frederick,

As I mentioned to Colin, I would start a new thread on this question,
which is athttp://groups.google.com/group/rubyonrails-talk/tree/browse_frm/threa…

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?

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

Hi Colin,

I still don't have subversion not git working.

Well the answer to that problem is obvious.

Colin

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: