Ruby on Rails Thursday, December 6, 2012

I supposed it was obvious... ; )


Seriously, line 45 is in the update function:

40   def update 
41     @lead = Lead.find_by_id( params[:id] ) 
42
43    upload 
44
45    if @lead.update_attributes!(params[:lead]) 
46      flash[:success] = "Leaderboard successfully updated." 
47      redirect_to @lead 
48    else 
49      render action: "edit" 
50    end 
51  end 




Le jeudi 6 décembre 2012 11:05:59 UTC+1, Colin Law a écrit :
On 6 December 2012 09:43, Jean-David <jeandav...@gmail.com> wrote:
> 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'

The error says that you are calling method 'name' for something that
is nil at line 45 in leads_controller.rb.

>
>
> 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.

Unfortunately you have not told us which is line 45.

Colin

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

No comments:

Post a Comment