iam developing a app and unable to solve one problem…the problem is
regarding pagination…
im my app in controller class i have these two methods:
i have two tables one is chatusers and the other is
voicechats…chatusers foreign key refers voicechats…the
below methods are present in chatuser controller…
if Voicechat.find(@chatuser.voicechat_id).password ==
@chatuser.password
if @chatuser.save
flash[:notice] = ‘Sign in Successfull…’ @chatusers = Chatuser.find(:all, :conditions => [“voicechat_id
= @chatuser.voicechat_id”])
redirect_to :action=> ‘list’
else
render :action => ‘new’
end
else
flash[:notice]=‘Plz enter correct password.’
render :action => ‘new’
end
end
chatusers is a table in the database…
def list @chatuser_pages, @chatusers=paginate( :chatusers, :conditions=>["
voicechat_id = @chatuser.voicechat_id "],:per_page=>18)
end
chatusers is a table in the database…in which foreign key refers to
voicechats table…
my goals:
wen create action is taking place, only chatusers with that foreign
key (which is assigned to the new user) should be listed… for
that i have edited the default list method…using conditions but it
isnt working…instead it is not showing anything…even though some
records are present in chatusers table wid that foreign
key…
@chatuser_pages, @chatusers
=paginate(:chatusers, :conditions=>[“voicechat_id=?”, @chatuser.voicechat_id],:per_page=>18) in the list method it is
showing following error:
You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
And wen i copy this code code and paste it in the create method and i
also renamed the list(int views folder) file to create…it is working
and it is showing wat is required…i donno y it is not showing the
in the first way…
In create method… there is a line called if @chatuser.save it
means it is saving the record in the model… and after that it is
probabaly set to null automatically… and may be thats y we were
unable to solve get @chatuser.voicechat_id.
Plz help me out to overcome this problem…thanks in advance…bye
and one more thing… i think @chatuser is local to class and may be
that y its is not accessible outside…
can we anyway get the record id that is added recently…bcause if we
can get that we can replace @chatuser.voicechat_id
with Chatuser.find(id).voicechat_id … plz try to help me
out …have a nice time bye
below methods are present in chatuser controller…
redirect_to :action=> ‘list’
chatusers is a table in the database…
def list @chatuser_pages, @chatusers=paginate( :chatusers, :conditions=>["
voicechat_id = @chatuser.voicechat_id "],:per_page=>18)
end
Your conditions parameter is wrong… You’re sending :conditions =>
[“voicechat_id = @chatuser.voicechat_id”] which is exactly what’s
going to show up in the mysql query, which of course will fail… For
example, it’ll generate something like:
select * from chatusers where voicechat_id = @chatuser.voicechat_id …
which isn’t valid sql… You want to use the following: