Paginating a find...

3 views
Skip to first unread message

Paul Nichols

unread,
Jul 12, 2007, 6:28:21 AM7/12/07
to rubyonra...@googlegroups.com
def summary
@most_recent_fails = Run.find(:all, :order => 'id DESC')
@fails_pages, @most_recent_fails = paginate :most_recent_fails,
:per_page => 2, :conditions => ['run_id=?', @run.id]
end

Brings up the following error:

Called id for nil, which would mistakenly be 4 -- if you really wanted
the id of nil, use object_id

Any ideas why?

--
Posted via http://www.ruby-forum.com/.

Roberto Gattinoni

unread,
Jul 12, 2007, 6:33:03 AM7/12/07
to rubyonra...@googlegroups.com
Paul Nichols wrote:
> def summary
> @most_recent_fails = Run.find(:all, :order => 'id DESC')
> @fails_pages, @most_recent_fails = paginate :most_recent_fails,
> :per_page => 2, :conditions => ['run_id=?', @run.id]
> end
>
> Brings up the following error:
>
> Called id for nil, which would mistakenly be 4 -- if you really wanted
> the id of nil, use object_id
>
> Any ideas why?

How and where do you set up @run (for use in @run.id)?

Roberto Gattinoni.

Paul Nichols

unread,
Jul 12, 2007, 6:34:14 AM7/12/07
to rubyonra...@googlegroups.com

Ahh, i haven't.

I guess it should be changed to @most_recent_fails?

Jacob Atzen

unread,
Jul 12, 2007, 6:36:26 AM7/12/07
to rubyonra...@googlegroups.com
Paul Nichols wrote:
> def summary
> @most_recent_fails = Run.find(:all, :order => 'id DESC')
> @fails_pages, @most_recent_fails = paginate :most_recent_fails,
> :per_page => 2, :conditions => ['run_id=?', @run.id]
> end

Notice there's a will_paginate plugin which seems to be the preferred
way to do pagination these days.

--
Cheers,
- Jacob Atzen

Roberto Gattinoni

unread,
Jul 12, 2007, 8:37:06 AM7/12/07
to rubyonra...@googlegroups.com

@most_recent_fails is a collection (result of your Run.find)

Why do you put a condition in the paginate plugin and not in the
Run.find? After all if I understand correctly you are trying to filter
the Run model, so why don't you do that before paginating? You should
explain where does @run.id come from (a previous form, a user selection,
...).


Roberto Gattinoni.

Mike Garey

unread,
Jul 12, 2007, 2:08:57 PM7/12/07
to rubyonra...@googlegroups.com
refer to the following post for more information about paginating result sets:

http://tinyurl.com/35m7e7

Mike

Phlip

unread,
Jul 14, 2007, 3:07:08 PM7/14/07
to rubyonra...@googlegroups.com
Paul Nichols wrote:

> :per_page => 2, :conditions => ['run_id=?', @run.id]

> Called id for nil, which would mistakenly be 4 -- if you really wanted


> the id of nil, use object_id

That's the standard "whiny" error message you get when you call nil.id.

id is a (deprecated) member of Object, and an important member of any
ActiveRecord model. So one of your models is nil - probably @run.

Tip: better delimiters and linefeeds would have helped you spot the error
faster:

@fails_pages, @most_recent_fails =
paginate(
:most_recent_fails,
:per_page => 2,
:conditions => ['run_id=?', @run.id])

--
Phlip
http://www.oreilly.com/catalog/9780596510657/
"Test Driven Ajax (on Rails)"
assert_xpath, assert_javascript, & assert_ajax

Reply all
Reply to author
Forward
0 new messages