I'm not sure if the placement is correct but I'm still getting "Error 
adding projects to IRB table. (unknown attribute: 
Q16_Research_Category_International). Please try again." errors.

Here's my updated code.

def import_irb_file
     # set file name
      file = params[:irb][:file]
      rowcount = 0

      Irb.transaction do
        FasterCSV.parse(file,
                        :headers => true,
                        :header_converters => lambda { |h| h.tr(" ", 
"_").delete("^a-zA-Z0-9_")},
                        :converters => :all ) do |row|
                          Irb.create!(row.to_hash)
                          rowcount += 1
                        end
      end
      # if successful then display, then redirect to index page
      flash[:notice] = "Successfully added #{rowcount} project(s)."
      redirect_to :action => :index

    rescue => exception
      file_name = params[:irb]['file'].original_filename
      file_parts = params[:irb]['file'].original_filename.split('.')
      ext = file_parts[1]

      if ext != 'csv'
        error = "CSV file is required"
      else
        error = ERB::Util.h(exception.to_s) # get the error and HTML 
escape it
      end
      # If an exception in thrown, the transaction rolls back and we end 
up in this
      # rescue block
      flash[:error] = "Error adding projects to IRB table. (#{error}). 
Please try again. "
      redirect_to :controller => 'irbs', :action => 'new'
  end

John

-- 
Posted via http://www.ruby-forum.com/.