m getting an error "Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id"
when i'm creating new record,like a topic has many discussions,when i'm creating a new discussions m getting that error..i already assign the topic id as foreign key in discussions controller....please sort out this problem.if u getting the same..how you rectify those errors..and in how many cases this errors are prone to occur???
We need more information to help you , can you post part of the relevant code?
subjects has many pages
subject controller code::
class SubjectController < ApplicationController
def list
@subjects = Subject.order("subjects.position ASC")
end
def show
@subject = Subject.find(params[:id])
end
def new
@subject = Subject.new(:visible => 'false')
@subject_count = Subject.count + 1
end
def create
@subject = Subject.new(params[:subject])
if @subject.save
redirect_to(:action => 'list')
else
render('new')
end
end
end
page controller code::
class PageController < ApplicationController
before_filter :find_subject
def index
list
render(‘list’)
end
def list
@pages = Page.where(:subject_id => @subject.id)
end
def show
@page = Page.find(params[:id])
end
def new
@page = Page.new(:subject_id => @subject.id)
@page_count = @subject.pages.size + 1
@subjects = Subject.order(‘position ASC’)
end
def create
@page = Page.new(params[:page])
if @page.save
redirect_to(:action => ‘list’, :subject_id => @page.subject_id)
else
render(‘new’)
end
end
private
def find_subject
if params[:subject_id]
@subject = Subject.find_by_id(params[:subject_id])
end
end
end
this is my controller code and when m creating new page m getting dat error…
You're calling find_subject on a before_filter, and it may or may not
populate a @subject object depending on whether there's a param value.
But your action then goes on to expect there to definitely be an
@subject instance variable. Put a breakpoint in find_subject, and see
what the parameter values are.
This means that you have some code some_object.id where some_object is
nil. The error message should tell you which line is failing. Have a
look at the Rails Guide on debugging for ideas on how to debug your
code to find the problem.
Colin