will_paginate没有在网上显示......

Tat*_*tat 2 ruby rubygems ruby-on-rails will-paginate

前面的问题是:限制RoR结果的常见做法什么?

这是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
Run Code Online (Sandbox Code Playgroud)

和我的show.html.erb:

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

<%= will_paginate @posts %>
Run Code Online (Sandbox Code Playgroud)

但在浏览器中,我只能得到这个:

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>]
Run Code Online (Sandbox Code Playgroud)

除此之外,我没有看到任何其他东西.

我试图用控制台解决问题:

>> defined? WillPaginate
=> "constant"
>> [].paginate
=> []
>> ActiveRecord::Base.respond_to? :paginate
=> true
Run Code Online (Sandbox Code Playgroud)

Bri*_*ian 7

在这种情况下,您正好看到了应该是什么......如果需要,will_paginate方法将只打印出分页链接.您没有看到帖子列表,因为您不通过@posts数组进行迭代.尝试添加此:

<% @posts.each do |post| -%>
  <p>Title: <%= post.title %>
  ...
<% end -%>
Run Code Online (Sandbox Code Playgroud)

你可能不会得到分页链接,除非你在数组中有30条记录(我认为这是默认值).您也可以在控制器中执行此操作,以查看使用较小数据集的分页:

@posts = @user.posts.paginate :page => params[:page], :per_page => 2
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!