2012-08-09 4 views
2

에 열거 변환 할 수 없습니다.는 배열

#<Enumerator: []:find({:sort=>[["value.s", :desc], ["value.pml", :asc]], :limit=>10, :skip=>0})> 

나는 점점 오전 : 나는 결과를 검사하는 경우

[ 
    {"_id"=>1.0, "value"=>{"s"=>4.2, "p"=>14.95, "pml"=>0.01993}}, 
    {"_id"=>2.0, "value"=>{"s"=>3.7, "p"=>12.9, "pml"=>0.0172}}, 
    {"_id"=>3.0, "value"=>{"s"=>4.2, "p"=>12.9, "pml"=>0.0172}}, 
    {"_id"=>4.0, "value"=>{"s"=>4.0, "p"=>11.95, "pml"=>0.01593}}, 
    {"_id"=>300.0, "value"=>{"s"=>0.0, "p"=>8.95, "pml"=>0.01193}}, 
] 

collection을 받고 있지만, collection 나에게 준다 : 나는 결과를 검사하는 경우

mr_collection = self.where(query).map_reduce(map, reduce).finalize(finalize).out({:replace => 'mr_results'}) 
paginator = WillPaginate::Collection.new(page, limit, collection_count) 

collection = mr_collection.find(
    :sort => sort, 
    :limit => limit, 
    :skip => skip 
) 
paginator.replace(collection) 

mr_collection을 받고있는 동안은, mr_collection 나를 준다 줄에 오류가 있습니다 paginator.replace(collection). Ruby 1.9.3 & Rails 3.2.6을 사용하고 있습니다.

+0

방금 ​​질문 업데이트 –

답변

4

collectionArray으로 분명히 변환 할 수없는 Enumerator입니다.이 값은 replace입니다. 여기

는 rubydocs의 의견은 다음과 같습니다

Enumerable#find(ifnone = nil) { |e| ... }

Passes each entry in enum to block. Returns the first for which block is not false. If no object matches, calls ifnone and returns its result when it is specified, or returns nil otherwise.

If no block is given, an enumerator is returned instead.

따라서 당신은 두 가지 옵션이 있습니다
  1. 당신이 배열에 열거 모든 요소 수익률을 원하는 경우

    .
  2. 첫 번째 경기 만 원하는 경우 일치하는 항목을 결정하는 블록을 제공하십시오.

희망이 도움이됩니다.

(이야기의 도덕 : 항상 문서 읽기!)

4

나는 몽고이드를 사용 해 본 적이 전혀 없습니다. 그러나 검색이 굉장히 비슷한 질문을 전면에 가져왔다 - Mongoid 3 - access map_reduce results

불행하게도 내 environent가이 링크를 살펴 경험이

collection = mr_collection.send(:documents).sort(sort).limit(limit).skip(skip).to_a 

의 마법을 테스트하기 위해 설정되어 있지? 다행히도 귀하의 문제를 해결하는 데 도움이 될 것입니다!