3

根据 github 上 mongoid 的自述文件,我可以进行花哨的查询,例如 Person.select(:first_name, :last_name).where(:title => "Sir").skip(10).limit(10).paginate

我尝试将此与 will_paginate (3.0.pre2) 结合使用

@companies = Company.paginate(:per_page=>5, :page=>params[:page], :sort => [sort_column, sort_direction])

---> 工作正常

@companies = Company.all.paginate(:per_page=>5, :page=>params[:page], :sort => [sort_column, sort_direction])

---> 排序不再起作用

我试过了

@companies = Company.where(:name=>/^#{params[:search]}/).paginate( :per_page=>5, :page=>params[:page], :sort => [sort_column, sort_direction])

--> 不起作用

然后

@companies = Company.paginate(:conditions=>{:name=>/^#{params[:search]}/}, :per_page=>5, :page=>params[:page], :sort => [sort_column, sort_direction])

---> 作品

但我认为搜索功能应该在模型中而不是在控制器中!?

4

1 回答 1

6

解决方案:

不要在分页中使用排序,order_by()而是使用。例如:

公司型号:

def self.search(search)
  if !search.blank?
   where(:name => /^#{search}/)
  else
   all
  end
end

公司控制人(索引):

 @companies = Company.search(params[:search]).order_by([sort_column, sort_direction]).paginate(:per_page=>5, :page=>params[:page])
于 2010-12-15T00:10:28.517 回答