I am using Rails 2.1 (and RUBYGEMS VERSION: 1.5.0 RUBY VERSION: 1.8.7) and have been having a *devil* of a time trying to get a simple thing to work: upload and process a CSV file. After extensively researching many examples both here and elsewhere, I have not been successful in getting this work; yet, I feel I''m so close! So, I am in hopes that someone here could please point out my (hopefully slight) errors below; my current bug is in the first lines of the controller. Once this part is working, I''ll finish the code that parses the file and stores the data into the database. I do not need to store the uploaded file itself, though I am storing the name of the file that gets uploaded (in the Upload table). I also realize it is better style to have ''fat models and thin controllers'' but I''m just trying to get this work. Thanks in advance to anyone who can help! *the view code:* <% form_for(:upload, :url => {:action=> :create}, :html => { :multipart => true} ) do |form| %> Upload your file: <%= form.file_field("upload_file",:size=>50,:class => "csv-input") %><br/> <%= submit_tag("Upload") %> <% end %> *the controller code:* def create @upload = Upload.new(params[:upload][:upload_file]) thefile = File.new(params[:upload][:upload_file]) @upload.filename = base_part_of(thefile.original_filename) @upload.assign_name(thisfilename) @upload.call(parse_file(params[:upload_file])) respond_to do |format| if @upload.save flash[:notice] = ''Upload was successful.'' format.html { redirect_to(@upload) } format.xml { render :xml => @upload, :status => :created, :location => @upload } else format.html { render :action => "new" } format.xml { render :xml => @upload.errors, :status => :unprocessable_entity } end end end def parse_file(file) FasterCSV.foreach(file.path,:headers=>"first_row", :col_sep=>"\t") do |row| row.each{|row| puts "row: #{row.inspect}"} end *the model code:* def new @upload = Upload.new end def assign_name(n) @upload.filename = n end -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Bryan Crossland
2011-Feb-25 21:50 UTC
Re: what''s the correct syntax to process a file_field object?
On Fri, Feb 25, 2011 at 2:27 PM, rixter <caseyrick-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > *the controller code:* > def create > @upload = Upload.new(params[:upload][:upload_file]) > thefile = File.new(params[:upload][:upload_file]) > @upload.filename = base_part_of(thefile.original_filename) > @upload.assign_name(thisfilename) > @upload.call(parse_file(params[:upload_file])) >The last line above is calling params[:upload_file] and not params[:upload][:upload_file]. params[:upload_file] doesn''t exist according to your view layout. B. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.