如何从没有“每个”块的 Mongoid::Criteria 获取结果数组
Posted
技术标签:
【中文标题】如何从没有“每个”块的 Mongoid::Criteria 获取结果数组【英文标题】:How to get the resultant array from a Mongoid::Criteria without an "each" block 【发布时间】:2011-05-28 18:38:46 【问题描述】:我们的应用程序大量使用 ajax,因此我们在所有视图中都有类似 var items = #@items.to_json
的语句。现在@items
在控制器中被设置为@items=Item.all
。问题是 @items
是 Mongoid::Criteria
并且它没有 .to_json
方法。所以,它在渲染视图时抛出了一个错误。有没有一种简单的方法可以将此条件对象转换为数组,而无需使用 @items.collect |i| i
之类的代码
【问题讨论】:
【参考方案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
【讨论】:
【参考方案2】:使用条件中的#entries
方法进行请求:
@items = Item.all.entries
【讨论】:
你好 shingara,反之亦然吗?我的意思是将数组转换为 Mongoid::Criteria。【参考方案3】:实际上,我正在应用的解决方案是在一个数组中进行转换,所以我仍然可以使用标准的力量,然后得到结果。转换成数组后,就可以在json中转换了
@items.to_a #给你记录
@items.to_a.to_json #给你最终的json
【讨论】:
以上是关于如何从没有“每个”块的 Mongoid::Criteria 获取结果数组的主要内容,如果未能解决你的问题,请参考以下文章