Forum: Ruby on Rails Paginating a find...

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Paul N. (Guest)
on 2007-07-12 14:28
 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?
Roberto G. (Guest)
on 2007-07-12 14:33
Paul N. 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 N. (Guest)
on 2007-07-12 14:34
Roberto Gattinoni wrote:
> Paul N. 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.

Ahh, i haven't.

I guess it should be changed to @most_recent_fails?
Jacob A. (Guest)
on 2007-07-12 14:36
(Received via mailing list)
Paul N. 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 A.
Roberto G. (Guest)
on 2007-07-12 16:37
Paul N. wrote:
> Roberto Gattinoni wrote:
>> Paul N. 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.
>
> Ahh, i haven't.
>
> I guess it should be changed to @most_recent_fails?

@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 G. (Guest)
on 2007-07-12 22:10
(Received via mailing list)
refer to the following post for more information about paginating result
sets:

http://tinyurl.com/35m7e7

Mike
Phlip (Guest)
on 2007-07-14 23:08
(Received via mailing list)
Paul N. 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
This topic is locked and can not be replied to.