error in runtime controller#view

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