views:

28

answers:

2

The previous question is here : http://stackoverflow.com/questions/3229758/what-is-the-common-practice-on-limit-the-result-in-ror

Here's the users_controller:

def show
  @user = User.find(params[:id]) 

  @posts = @user.posts.paginate :page => params[:page] 

  respond_to do |format|
    format.html # show.html.erb
    format.xml  { render :xml => @user }
  end
end

and my show.html.erb:

<%=h @posts.length %> 
<%=h @posts.inspect %> 

<%= will_paginate @posts %>

But in the browser, I only get this:

4 [#<Post id: 7, title: "I am a root", description: "what can I do", views: 8, created_at: "2010-07-12 15:16:26", updated_at: "2010-07-12 15:16:26", user_id: 32>, #<Post id: 8, title: "root Post two", description: "This is the second one.", views: 2, created_at: "2010-07-12 15:42:57", updated_at: "2010-07-12 15:42:57", user_id: 32>, #<Post id: 9, title: "The third one.", description: "Ok, this is the third ads", views: 3, created_at: "2010-07-12 15:43:18", updated_at: "2010-07-12 15:43:18", user_id: 32>, #<Post id: 10, title: "I type very many", description: "What is very many for?", views: 33, created_at: "2010-07-12 15:43:34", updated_at: "2010-07-12 15:43:34", user_id: 32>]

Besides that, I don't see any other stuff.

I tried to trouble shooting with console:

>> defined? WillPaginate
=> "constant"
>> [].paginate
=> []
>> ActiveRecord::Base.respond_to? :paginate
=> true
A: 

Get rid of the inspect line and add custom code to display each property of your objects.

mcandre
+2  A: 

In this case, you are seeing exactly what you should... the will_paginate method will only print out pagination links if necessary. You don't see the post listing, because you don't iterate though the @posts array. Try adding this:

<% @posts.each do |post| -%>
  <p>Title: <%= post.title %>
  ...
<% end -%>

You probably will not get the pagination links unless you have 30 records in the array (I think that is the default). You can also do this in your controller to see the pagination working with a smaller set of data:

@posts = @user.posts.paginate :page => params[:page], :per_page => 2

Hope this helps!

Brian
it works, just like magic.
Tattat