adding error with array of checkbox

def group_permission         @role_combo = Role.find(:all, :select => 'id, role_name').collect { |r| [r.role_name, r.id] }         @roles = Role.find(:all, :select => 'id, role_name')         @pages = Page.find(:all)         #@page_roles = PagesRole.find_by_sql("Select `add`, `update`, `delete` From pages_roles")         @page_list = Page.find(:all, :select => 'id, page_name')         @permission = PagesRole.find_by_sql("Select role_id, GROUP_CONCAT(CAST(page_id AS CHAR)) As pages, " +                 "GROUP_CONCAT(CONCAT(CAST(pr.added AS CHAR), " +                 "CAST(pr.updated AS CHAR), CAST(pr.deleted AS CHAR))) AS permissions " +                 "From pages_roles as pr " +                 "Group By role_id " +                 "Order By role_id, page_id").collect { |p| p.attributes }     if request.post?       begin #2                 form = params[:pages_role]         rec_affected = 0         PagesRole.transaction do           #clear the old records first             rec_affected = PagesRole.delete_all(["role_id = ?", form[:role_id]])               #add new record             if params[:chbox]                debugger           #params[:chbox].each do |key,value|             1.upto(params[:chbox].length-18) do |check|

              if params[:chbox] == 1                  params[:chbox].squeeze!(" ")                  params[:chbox].split(0)               end                   pr = PagesRole.new                 pr.role_id = params[:pages_role][:role_id]                   pr.page_id = check.to_i                 pr.added = [check]                 pr.updated = [check]                 pr.deleted = [check]                 pr.save!           end         end

        end       rescue => e         puts "#{e}====================="         flash[:notice] = "Permission on <b>" + Role.find(params[:pages_role][:role_id]).role_name +                     "</b> group could not be saved"         logger.error(e)       else         if rec_affected > 0           flash[:notice] = "Permission on <b>" + Role.find(params[:pages_role][:role_id]).role_name +                       "</b> group was successfully updated"         else           flash[:notice] = "Permission on <b>" + Role.find(params[:pages_role][:role_id]).role_name +                       "</b> group was successfully added"         end         redirect_to :action => 'group_permission'       end     end     end

Hi sir, i have an error with adding data with array of checkbox when i added the element in array is increase for examle, in my checkbox i have 27 checkbox but when i checked on someone checkbox it has added one more 28 example chbox = {"1","0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"}

if i check two time chbox = {"1","0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"}

i hope u will help my by regard.... thank u.

Hi sir, i have an error with adding data with array of checkbox when i added the element in array is increase for examle, in my checkbox i have 27 checkbox but when i checked on someone checkbox it has added one more 28 example chbox = {"1","0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"}

if i check two time chbox = {"1","0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"}

This is a sideeffect of how checkboxes work. As per the html spec, a checked checkbox submits its value, but an unchecked one submits nothing. However a lot of the time, its far more helpgul to get (for example) 1 or 0 than 1 or nothing. if you use the check_box helper then rails generates a hidden field tag with the same name and value 0. if the checkbox is unchecked this value wins (because rails ignores duplicate parameter names), if its checked then the checkbox wins. This doesn't work with arrays though, since they are implemented via parameter name repetition.

You'll be better off using check_box_tag rather than check_box and having the box's value be the id of the role)

Fred