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.