【问题标题】:Ruby on Rails: will_paginate is not working correctlyRuby on Rails:will_paginate 无法正常工作
【发布时间】:2011-12-05 15:50:29
【问题描述】:

如果我点击下一个或上一个链接,它不会转到下一页或上一页。

所有帖子都在同一页面上,但底部有下一个、上一个的链接。

在 PostsController 中:

@posts = Post.paginate(:per_page => 15, :page => params[:page], :order => 'created_at DESC')

在帖子/索引中:

<%= will_paginate @posts%>

will_paginate 的问题在哪里?

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 will-paginate


【解决方案1】:

您必须在分页之前订购, 所以,把它改成

@posts = Post.order('created_at DESC').paginate(:per_page => 15, :page => params[:page])

【讨论】:

    【解决方案2】:

    不确定这是否会导致您的错误,但应该在 will_paginate 之外进行排序。

    @posts = Post.paginate(:per_page => 15, :page => params[:page]).order('created_at DESC')
    

    这在 Rails 3 中应该是这样的。

    我在控制器中设置 per_page 参数时也遇到了麻烦。您可以尝试在模型中设置它。

    class Post
      self.per_page = 10
    end
    

    【讨论】:

    • 那没用,我做了 @posts = Post.paginate(:per_page => 15, :page => params[:page]).order('created_at DESC') ,我也在同样不起作用的模型中添加了 self.per_page = 10。
    • 你会在你的控制器方法和视图中发布所有代码吗?
    • 另外,您会在控制台中运行查询并发布 sql。为此,请在查询末尾添加 to_sql。 Post.paginate(:per_page => 15, :page => params[:page]).order('created_at DESC').to_sql
    • 我会在哪里输入那行,在 rails 控制台? Post.paginate(:per_page => 15, :page => params[:page]).order('created_at DESC').to_sql
    • 我得到了这个,"SELECT \"posts\".* FROM \"posts\" ORDER BY created_at DESC LIMIT 15 OFFSET 15" for Post.paginate(:per_page => 15, :page = > 2).order('created_at DESC').to_sql
    【解决方案3】:

    更新到will_paginate , '3.1.7' 解决了我的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多