Isn't what you're trying to do AJAX? J On 08/08/2005, at 2:01 PM, Andres Montano wrote: > Thanks for the quick reply Julian. I will provide more detail here. > > I have two tables: roles and permissions with a > "has_and_belongs_to_many" > relationship between each other. > > In the edit action for role, I initialize role and permissions like > this: > > @role = Role.find(@params[:id]) > @permissions = Permission.find (:all, :order => "title") > > In the model I have two lists: one with all the available > permissions and > another with the permissions that a specific role has and buttons > that move > stuff from one list to the other using javascript. > > The rhtml code for the lists goes like this: > > <select id="available_permissions" name="available_permissions" > multiple > size="10"> > <% available_permissions = @permissions - @role.permissions %> > <%= options_for_select (available_permissions.collect { |p| > [p.title, > p.id]}) %> > </select> > > <select id="role_permissions" name="role[permissions][]" multiple = > "multiple" size="10"> > <%= options_from_collection_for_select(@role.permissions, "id", > "title") > %> > </select> > > I have two buttons invoke a javascript method to remove an item > from one > list and add it to the other list. It goes like this: > > function moveSelected(orig, dest) > { > var selectOrig = document.getElementById(orig); > var selectDest = document.getElementById(dest); > var i = 0; > while (i<selectOrig.length) > { > option = selectOrig.options[i]; > if (option.selected) > { > option.selected = false; > selectOrig.remove(i); > if (nn6) > { > selectDest.length = selectDest.length+1; > selectDest.options[selectDest.length-1] = option; > } > else selectDest.add(option); > } > else i++; > } > } > > This part works well with records that I added manually to the > permissions_roles intermediate table. Nevertheless the simple > if @role.update_attributes(@params[:role]) ... > > is not intelligent enough to populate role.permissions and update > the tables > in the database. That is fine, as long as I can access the select > options > from the controller, but whatever name I put in params doesn't seem > to work. > The hash returned by @params[:role] or @params["role"] doesn't include > "permissions" (i.e. @params[:role]["permissions"] is nil). Changing > the name > to something else like id = "assocperms" name = "assocperms[]" > doesn't help > as @params["assocperms"] also is nil (and so is @params["assocperms > []"], > etc.). Also removing the "[]" from the name didn't do the trick. Is > my only > alternative to wrap up the select list in a div, send it via a > form_remote_tag, and parse it manually? The must be a more elegant > solution. > > If anyone can provide insight on how I can tackle this problem it > will be > greatly appreciated! > > Andres > > "Julian Leviston" <julian / coretech.net.au> wrote in message > news:EE4E8D2C-7BDA-41E2-86E2-AC2C6042A33A / coretech.net.au... > >> Hi. >> >> I wonder if there's a rails list... >> >> Can you be more specific? >> >> So you've got your helper code down to create HTML select, that's >> cool... >> but what do you mean by "use modifies the options via javascript" >> - how? >> >> Julian. >> >> On 08/08/2005, at 12:01 PM, Andres Montano wrote: >> >> >>> Does anybody know if the options for a select in a form are >>> accesible >>> via >>> @params? >>> >>> I have an application that succesfully builds the select html >>> statements >>> but >>> then the user modifies the options via javascript. When the form >>> gets >>> posted, is there a way to know what options are there, which are >>> selected, >>> etc from the controller? >>> >>> I have tried all sorts of strategies like adding the [] to the >>> name of >>> the >>> select tag, but however I name it, param always returns nil. >>> >>> Thanks, >>> Andres >>> >>> >>> >>> >>> >> >> >> >> > > > >