2010-12-14 32 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])