如何在没有“each”块的情况下从Mongoid :: Criteria获取结果数组

时间:2010-12-21 11:26:59

标签: arrays mongoid criteria

我们的应用程序非常重视ajax,因此我们在所有视图中都有var items = #{@items.to_json}之类的语句。现在@items在控制器中设置为@items=Item.all。问题是@itemsMongoid::Criteria,并且没有.to_json方法。因此,渲染视图时会出现错误。是否有一种简单的方法可以将此条件对象转换为数组,而无需使用@items.collect {|i| i}

之类的代码

3 个答案:

答案 0 :(得分:59)

使用条件中的#entries方法执行请求:

@items = Item.all.entries

答案 1 :(得分:3)

实际上,我正在应用的解决方案是转换为数组,因此我仍然可以使用标准的强大功能然后获得结果。转换为数组后,可以转换为json

@ items.to_a #give you the records

@ items.to_a.to_json#给你最后的json

答案 2 :(得分:1)

FWIW,至少从Mongoid 4.0开始,有as_json实例方法:

Person.where(:title => "Sir").as_json

参考:http://rdoc.info/github/mongoid/mongoid/Mongoid/Criteria#as_json-instance_method