NOOB ALERT

Now I warned you, here's the problem that's been getting me mad for hours 

I've got a model for content I'm calling "lead". It has a title, a text and 
an image used as a background.

I'm not using paperclip or CarrierWave to handle the image file (and I 
don't want to, one of my needs here is to learn how this all works). 
I'm using this function to upload the file (it comes directly from the 
rails guides) :

  def upload
    if params[:lead][:illustration]
      uploaded_io = params[:lead][:illustration]

      File.open(Rails.root.join('app', 'assets', 'images', 
uploaded_io.original_filename), 'wb') do |file|
        file.write(uploaded_io.read)
      end      

      @lead.illustration = "#{uploaded_io.original_filename}"
    end
  end

When creating a "lead", everything goes fine with create:

  def create
    @lead = Lead.new( params[:lead] )
    
    upload

    if @lead.save
      flash[:success] = "Lead successfully added."
      redirect_to @lead
    else
      redirect_to root_path
    end
  end

The "lead" gets saved, I can use it. So far, so good. 


Now with the problem (remember the NOOB ALERT). 
Updating a lead without modifying the image goes fine, but updating with a 
new image returns this error:

NoMethodError in LeadsController#update

undefined method `name' for nil:NilClass

and

app/controllers/leads_controller.rb:45:in `update'


Here's my update function:

  def update
    @lead = Lead.find_by_id( params[:id] )

    upload

    if @lead.update_attributes!(params[:lead])
      flash[:success] = "Leaderboard successfully updated."
      redirect_to @lead
    else
      render action: "edit"
    end
  end

Basically the same as create. I've been googling and going back and forth 
for hours and I didn't get to solve this. Any help would be more than 
welcome.

-- 
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 [email protected].
To unsubscribe from this group, send email to 
[email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msg/rubyonrails-talk/-/t6V4GCC_EoMJ.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to