2010-12-14 3 views
3

github의 mongoid에 대한 readme에 따르면 같은 멋진 쿼리를 수행 할 수 있습니다. Person.select (: first_name, : last_name) .where (: title => "Sir") .skip (10)으로 제한 할 (10) 전 will_paginate (3.0.pre2)mongoid, will_paginate, Mongoid 기준으로 정렬 작업하지 않음 DSL

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

작동과 함께이 시도

을 .paginate - -> 정렬 작업 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]) 
예를 들어