I have a form that contains both text fields and a file field for
uploading.  The form is set to post to a ruby script on my server.  The
script works(excluding file  uploading) when I delete
ENCTYPE="multipart/form-data" from the form tag but if that is
present(and it needs to be for the image upload to work) then ruby cgi
chokes on a gsub for one of my text field parameters called comment.

imageadmin.rb:14: private method `gsub!' called for
#<StringIO:0x20221278> (NoMethodError)

Anyone have some ideas for how I can make this work?


Here is the form code (it is from an eruby file)
-----------------------------------------------------
% imageArray = Dir.glob("*.jpg").sort!
% commentArray = imageArray.collect {|image| image[4..-5]}
% commentArray.collect {|image| image.gsub!("_", " ")}

<FORM  ENCTYPE="multipart/form-data" action="imageadmin.rb" method="post">
<%imageArray.length.times do |count|%>
  
  <BR />
  Comment:<input type="text" name="comment"
value="<%=commentArray[count]%>">
  <BR />
  Number:<input type="text" name="order"
value="<%=imageArray[count][0..2] %>">
  <BR />
  Delete:<input type="checkbox" name="delete"
value="<%=imageArray[count]%>">
  <BR />
<%end%>
<BR />
<BR />
<input type="file" value="upload"> 
Comment:<input type="text" name="uploadcomment" value="">

<BR />
<input type="submit" value="Submit">
</FORM>
-----------------------------------------------------------------


And here is the script itself.  I apologize for the lack of comments and
that it isn't as short as it could be.  I am going to clean it up tonight.
-----------------------------------------------------------------------
#!/usr/bin/env ruby
$stderr = File.open("error.log", "w+")
print "Content-type: text/html\n\n"
require 'cgi'
cgi = CGI.new

deleteArray = cgi.params['delete']
imageArray = Dir.glob("*.jpg").sort!
oldArray = Dir.glob("*.jpg").sort!
commentArray = cgi.params['comment']


#####Here is where I get the error#####
commentArray.each {|com| com.gsub!(" ", "_")}
numberArray = cgi.params['order']


count = imageArray.length

count.times do |x|
  imageArray[x].sub!(/^\d\d\d/, numberArray[x])
end

count.times do |x|
  imageArray[x] = numberArray[x] + "_" + commentArray[x] + ".jpg"
end

count.times do |x|
  File.rename(oldArray[x], imageArray[x])
end



#uploadImage = cgi['upload']
#if uploadImage
#  ucomments = cgi.params['uploadcomment']
#  ucomments.each {|com| com.gsub!(" ", "_")}
#  image = File.new("#{ucomments}.jpg", "w+")
#  image << uploadImage
#  image.close
#end


for thing in deleteArray
  File.delete(thing)
end

print "<meta  HTTP-EQUIV=\"REFRESH\" content=\"0; url=admin.rhtml\">"

-------------------------------------------------------------------


Thank you,
Matthew Margolis