Hi all,
I have two fields in a form.
One text field non asociated to the model for the user type a value.
the
view is:
<%= text_field_tag ‘item_cod’,’’, :size => 3 %>
Other a field with a select list with codes, names for the user
select
from. The view is:
<%= f.select :item_id, Item.select_list, :size => 40 %>
item_id is the real field of my model.
I want the following behavior.
- If the user type a code into the text_field tag -> Update the list
so
the user view the corresponding name of the item they type.
- If the user select from the list -> Update the text field with
the
code corresponding to the name selected. (this is the easy part)
My form works fine with one Observe field for the :item_id list but
I
can’t do work the point 1.
Thanks in advance,
FF
You probably need to put the select into a partial and then refresh
the partial when you return from the observe field. I would probably
go with an ajax “on blur” with the text field as this would put a bit
less load on the server.
I already have an onblur with the text field and another with the select
field.
This works fine, but I don`t know how to represent in the select list
the
corresponding name of the code typed in the text field.
2009/8/6 Me [email protected]
Put the select into a partial then do this:
This is what I came up with a while back to re populate a select box
after a DB add.
Mop is just my main Table / form.
When you add the person to the db then do this:
@mop = Mop.find(params[:id])
a = Contact.all.collect{|p| [ p.id ] }
b = @mop.contacts.all.collect{|p| [ p.id ] }
c = a-b
ar = Array.new
c.each{|arr|
arr.each{|p|
ar << p
}
}
@contacts = Contact.find(:all, :conditions => ["id IN (?)",
ar]).collect {|p| [ p.name, p.id ] }
In the RJS do this:
page[:contact_id].replace :partial => ‘updateContactList’, :locals =>
{ :contacts => @contacts, :mop => @mop, :person => @person }
Partial similar to this:
<%= select(‘contact’, ‘id’, @contacts, {:prompt => ‘Select Contact’},
{ :onchange => remote_function( :url => { :controller =>
‘contacts’, :action => “ajaxshowcontact”, :id => @mop},
:with => “‘contactid=’ + this.value” )
} ) %>