Hi, I'm running the following code in my show() method: @articles = Article.find(:all, :conditions => ["issue_id = ?", @issue.id], :order => '`column`,position') if (params[:article_id]) @article_id = params[:article_id].to_i c = 0 total = @articles.count while (c < total) if @article_id == @articles[c].id if c == 0 @article_prev = @articles.last.id else @article_prev = @articles[(c-1)].id end if ((c+1) == total) @article_next = @articles.first.id else @article_next = @articles[(c+1)].id end end end else @article_id = 0 @article_main = @articles.first.id @article_prev = @articles.last.id @article_next = @articles.id end Now to be honest this code is already a bit odd for me but I have no idea how else to approach this in Ruby on Rails. So I've attempted to do it PHP-style. But I'm being told that I can't do @articles.count Why? I have a user model and a user has a one to many relationship with articles so I know that: @user.articles.count works. Hence I'm guessing there's something big I'm missing here. So, how am I going to do this? How do I easily cycle through my list of articles and get the previous and next ones? Any help greatly appreciated. I've been going back and forth over my books and forums but I can't seem to formulate the question to be able to ask it.
on 2008-11-25 23:40
on 2008-11-26 00:11
On Nov 25, 2008, at 2:40 PM, Theo Graham-brown wrote: > c = 0 > total = @articles.count .... > guessing > there's something big I'm missing here. > > So, how am I going to do this? How do I easily cycle through my list > of > articles and get the previous and next ones? @user.articles.count is Rails magic. It's not actually fetching everything and then counting it up, it's looking at the associations and building a "SELECT COUNT...." @articles above is an array. Try @articles.size. -philip
on 2008-11-26 19:17
On Nov 25, 11:10 pm, Philip Hallstrom <phi...@pjkh.com> wrote: > On Nov 25, 2008, at 2:40 PM, Theo Graham-brown wrote: > > > @user.articles.count is Rails magic. It's not actually fetching > everything and then counting it up, it's looking at the associations > and building a "SELECT COUNT...." > To be quite precise, @user.articles is not an array, it's an association proxy. Fred
on 2008-11-27 17:13
Thanks both of you. I've got it working now. :-)