ruby-on-rails - 将简单搜索与 Kaminari Pagination Gem 结合使用

标签 ruby-on-rails search kaminari

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

post_controller.rb

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

后.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.

在您的 Controller 中添加检查,
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

关于ruby-on-rails - 将简单搜索与 Kaminari Pagination Gem 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13533453/

相关文章:

ruby-on-rails - 如何优雅地处理零个异常?

php - 我如何使用 belongsto laravel 进行搜索?

search - 从 Google 跟踪代码管理器向 Universal Analytics 提供站点搜索信息

mysql - 对打乱的 ActiveRecord 查询进行分页

mysql - SELECT COUNT(DISTINCT `Table` .`ID` ) 仅针对特定表返回 0

javascript - Rails 5 在 .erb 文件中崩溃,但仅在服务器上运行时发生

ruby-on-rails - ActiveRecord 不保存任何属性,保存默认值

ruby-on-rails - rails 3,简单数组的Kaminari分页

javascript - 获取 dataTables 和 twitter bootstrap 工作时出现问题

search - 增加和减少数字