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