我正在尝试使用Kaminari将分页应用于我的rails应用程序。 我还整合了一个基于 Railscast 剧集 #37 的简单搜索表单。 当我尝试应用 kaminari 页面并按方法时,我收到错误"未定义的方法页面"。下面是我正在使用的代码。
posts_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
索引.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
带有数组 https://github.com/amatsuda/kaminari#paginating-a-generic-array-object 的卡米纳里分页
对于活动记录::关系对象,请查看此 http://railscasts.com/episodes/239-activerecord-relation-walkthrough