Paginating a find...

瀏覽次數:3 次
跳到第一則未讀訊息

Paul Nichols

未讀,
2007年7月12日 清晨6:28:212007/7/12
收件者: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

未讀,
2007年7月12日 清晨6:33:032007/7/12
收件者: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

未讀,
2007年7月12日 清晨6:34:142007/7/12
收件者:rubyonra...@googlegroups.com

Ahh, i haven't.

I guess it should be changed to @most_recent_fails?

Jacob Atzen

未讀,
2007年7月12日 清晨6:36:262007/7/12
收件者: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

未讀,
2007年7月12日 上午8:37:062007/7/12
收件者: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

未讀,
2007年7月12日 下午2:08:572007/7/12
收件者:rubyonra...@googlegroups.com
refer to the following post for more information about paginating result sets:

http://tinyurl.com/35m7e7

Mike

Phlip

未讀,
2007年7月14日 下午3:07:082007/7/14
收件者: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

回覆所有人
回覆作者
轉寄
0 則新訊息