繁体   English   中英

使用简单搜索与Kaminari分页宝石

[英]Using Simple Search with Kaminari Pagination Gem

我正在尝试使用Kaminari将分页应用到我的rails应用程序。 我还整合了一个基于Railscast第37集的简单搜索表单。 当我尝试应用kaminari页面和每个方法时,我得到错误'未定义的方法页'。 下面是我正在使用的代码。

posts_controller.rb

def index
  @posts = Post.search(params[:search]).page(params[:page]).per(2)
end

post.rb

def self.search(search)
  if search
    find(:all, conditions: ['title || body LIKE ?', "%#{search}%"], order: "created_at DESC")
  else
    find(:all)
  end
end

index.html.erb

<%= paginate @posts %>

当我删除分页时,搜索工作正常。 当我删除搜索时,分页工作正常。 我似乎无法使用它们并使代码正常运行。 请告知我的代码中是否存在我遗漏的导致此操作无法正常工作的内容。

在您的情况下,您从搜索方法返回数组对象而不是ActiveRecord :: Relation对象。

 find(:all, conditions: ...) # find method will return an array object.

添加检查控制器,

def index
  @posts = Post.search(params[:search])
  if @posts.class == Array
    @posts = Kaminari.paginate_array(@posts).page(params[:page]).per(10) 
  else
    @posts = @posts.page(params[:page]).per(10) # if @posts is AR::Relation object 
  end
end

Kaminari与数组分页https://github.com/amatsuda/kaminari#paginating-a-generic-array-object

对于ActiveRecord :: Relation对象,请查看此http://railscasts.com/episodes/239-activerecord-relation-walkthrough

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM