Hi there, I''m having some trouble figuring this one out: I have a multiple select box. Selecting one option, the value gets submitted just fine. Selecting two or more options, it''s only the last selected that get''s submitted. Why? Greetings, Gitte Wange
How are you using the select box? Are you tying it right to the model class? If so this isn''t going to work (that I know of). Your <select> tag should look something like: <select name="my_options[]"> <option>..</option> </select> Of course with all the other stuff needed as well. You''ll notice the name is basically an array name which will allow you to pass as many values as you want for this option and can get it by doing something like params[:my_options][0]. Hope this helps! -Nick On 11/23/05, Gitte Wange <gitte-vGiBmfdlLJY@public.gmane.org> wrote:> > Hi there, > > I''m having some trouble figuring this one out: > I have a multiple select box. Selecting one option, the value gets > submitted just fine. Selecting two or more options, it''s only the last > selected that get''s submitted. > Why? > > Greetings, > Gitte Wange > _______________________________________________ > Rails mailing list > Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails >_______________________________________________ Rails mailing list Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org http://lists.rubyonrails.org/mailman/listinfo/rails
I had a similar problem yesterday, even the same perhaps? My guess is that it is in fact submitting all the values as an array but you are not seeing it selected in the form because all the values in the array are strings and not numbers. What I did was before using the array in "selected_value" I turned all the elements in the array to integers using to_i Hope that helps you out. -- Posted via http://www.ruby-forum.com/.
I''m doing something similar that uses muliple select menus. Here is the controller [code] def new() @side_menu = [ build_text_box(''Instructions:'', @required_text) ] if request.get?() @institution = Institution.new() elsif request.post?() if params[:commit].eql?(''Cancel'') redirect_to(:action=>''list'') return nil else @institution = Institution.new(params[:institution]) @institution.add_license_types_by_id(params[:license_type_ids]) if @institution.save() flash[:notice] = ''Institution was successfully created.'' redirect_to :action=>''list'' end end end @license_types = LicenseType.find(:all); @license_type_ids = [] @institution.license_types.each { |x| @license_type_ids << x.id } end [/code] Here is code from my view [code] <% options options_from_collection_for_select(@license_types, "name", "id", @license_type_ids) %> <%= select_tag("license_type_ids[]", options, {:multiple=>true, :size=>3}) %> [/code] Hope this helps. -Steven -- Posted via http://www.ruby-forum.com/.
Nick Stuart wrote:> How are you using the select box? Are you tying it right to the model > class? If so this isn''t going to work (that I know of). > Your <select> tag should look something like: > <select name="my_options[]"> > <option>..</option> > </select> > Of course with all the other stuff needed as well. You''ll notice the > name is basically an array name which will allow you to pass as many > values as you want for this option and can get it by doing something > like params[:my_options][0]. > > Hope this helps! > -NickHi Nick, Yeah it helped a lot - I didn''t know you had to put [] on the name of the input tag. Well I actually have another problem, because I''m using the multiple select in a form that''s an AJAX observe_form. I''m not sure how to pass the selected values in the :with parameter. Greetings, Gitte Wange
Glad it helped! Not so sure about the ajax part though. Only have used the very basic parts of that as of yet. On 11/24/05, Gitte Wange <gitte-vGiBmfdlLJY@public.gmane.org> wrote:> Nick Stuart wrote: > > How are you using the select box? Are you tying it right to the model > > class? If so this isn''t going to work (that I know of). > > Your <select> tag should look something like: > > <select name="my_options[]"> > > <option>..</option> > > </select> > > Of course with all the other stuff needed as well. You''ll notice the > > name is basically an array name which will allow you to pass as many > > values as you want for this option and can get it by doing something > > like params[:my_options][0]. > > > > Hope this helps! > > -Nick > > Hi Nick, > > Yeah it helped a lot - I didn''t know you had to put [] on the name of > the input tag. > > Well I actually have another problem, because I''m using the multiple > select in a form that''s an AJAX observe_form. I''m not sure how to pass > the selected values in the :with parameter. > > Greetings, > Gitte Wange > _______________________________________________ > Rails mailing list > Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails >