2010-12-14 42 views
3

根据github上的mongoid自述,我可以做一些奇妙的查询,如 Person.select(:first_name,:last_name).where(:title =>“Sir”) .skip(10).limit(10).paginatemongoid,will_paginate,排序不符合Mongoid标准DSL

i相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]) 

尝试这种组合 - - >排序呢esnt工作了

我试图

@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]) 

--->工作

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

回答

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])