Getting this error when hitting update. NoMethodError in Article#update You have a nil object when you didn''t expect it! You might have expected an instance of ActiveRecord::Base. The error occured while evaluating nil.update_attributes Source code. def create @article = Article.new(params[:article]) @article.user = @session[''user''] if @article.save flash[:notice] = ''article was successfully created.'' redirect_to :action => ''list'' else render :action => ''new'' end end def edit @article = Article.find_by_article_name(params[:article_name]) if @article.user != @session[''user''] flash[:notice] = ''You cannot edit an article you don\''t own.'' redirect_to :action => ''show'', :id => @article end end def update @article = Article.find_by_article_name(params[:article_name]) if @article.update_attributes(params[:article]) flash[:notice] = ''Article was successfully updated.'' redirect_to :action => ''show'', :id => @article else render :action => ''edit'' end end -- Posted via http://www.ruby-forum.com/.
Rob Balfour wrote:> Getting this error when hitting update. > > NoMethodError in Article#update > > You have a nil object when you didn''t expect it! > You might have expected an instance of ActiveRecord::Base. > The error occured while evaluating nil.update_attributes > > > Source code. > > def create > @article = Article.new(params[:article]) > @article.user = @session[''user''] > if @article.save > flash[:notice] = ''article was successfully created.'' > redirect_to :action => ''list'' > else > render :action => ''new'' > end > end > > def edit > @article = Article.find_by_article_name(params[:article_name]) > if @article.user != @session[''user''] > flash[:notice] = ''You cannot edit an article you don\''t own.'' > redirect_to :action => ''show'', :id => @article > end > end > > def update > @article = Article.find_by_article_name(params[:article_name]) > if @article.update_attributes(params[:article]) > flash[:notice] = ''Article was successfully updated.'' > redirect_to :action => ''show'', :id => @article > else > render :action => ''edit'' > end > end@article is nil, therefore find_by_article_name didn''t find one. You can aboid the symtom by checking for nil before calling update_attrbutes. As for why it didn''t find one, if you''re doing things the standard way, you probably want params[:article][:name] Alan -- Posted via http://www.ruby-forum.com/.
Alan Francis wrote:> @article is nil, therefore find_by_article_name didn''t find one. You > can aboid the symtom by checking for nil before calling > update_attrbutes. As for why it didn''t find one, if you''re doing things > the standard way, you probably want params[:article][:name]Apologies for both the vast amount of quoted text, and the poor quality typing. It''s definitely lunchtime. -- Posted via http://www.ruby-forum.com/.