【问题标题】:Ruby on Rails: Cannot add pagination both [Kaminari or will_paginate] to categorized postsRuby on Rails:无法在分类帖子中同时添加 [Kaminari 或 will_paginate] 的分页
【发布时间】:2015-05-07 05:19:52
【问题描述】:

我在让任何分页处理分类帖子时遇到问题。例如,所有帖子所在的索引,分页工作,但只要我点击类别,我就会收到这样的错误。

我做错了什么?

undefined method `total_pages' for #<Post::ActiveRecord_Relation:0x007f60061f5f78>

使用 Kaminari 发布控制器

def index
    if 
        params[:category].blank?
        @posts = Post.all.order("created_at DESC").page(params[:page]).per(1)
    else
        @category_id = Category.all 
        @category_id = Category.find_by(name: params[:category]).id
        @posts = Post.where(category_id: @category_id).order("created_at DESC")
    end
end

使用 will_paginate 发布控制器

 def index
        if 
            params[:category].blank?
            @posts = Post.all.order("created_at DESC").paginate(page:params[:page], per_page: 1 )
        else
            @category_id = Category.all 
            @category_id = Category.find_by(name: params[:category]).id
            @posts = Post.where(category_id: @category_id).order("created_at DESC")
        end
    end

查看:

<%= paginate @posts %>

查看:

<%= will_paginate @posts %>

【问题讨论】:

    标签: ruby-on-rails ruby pagination


    【解决方案1】:

    您需要 pagepaginate 方法在控制器的 else 部分中的 @posts

    def index
        if 
            params[:category].blank?
            @posts = Post.all.order("created_at DESC").paginate(page:params[:page], per_page: 1 )
        else
            @category_id = Category.all 
            @category_id = Category.find_by(name: params[:category]).id
            @posts = Post.where(category_id: @category_id).order("created_at DESC").paginate(page:params[:page], per_page: 1 )
        end
    end
    

    【讨论】:

    • 我还是新手,但我该怎么做呢?你的意思是def page @posts = Post.all.order("created_at DESC").paginate(page:params[:page], per_page: 1 ) end
    猜你喜欢
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 2014-02-20
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2010-12-18
    相关资源
    最近更新 更多