开发者

How to get the resultant array from a Mongoid::Criteria without an "each" block

开发者 https://www.devze.com 2023-01-31 09:22 出处:网络
Our application uses ajax very heavily and as a res开发者_开发技巧ult of this we have statements like var items = #{@items.to_json} in all our views. Now @items is being set in the controller as @item

Our application uses ajax very heavily and as a res开发者_开发技巧ult of this we have statements like var items = #{@items.to_json} in all our views. Now @items is being set in the controller as @items=Item.all. The problem is that @items is a Mongoid::Criteria and it doesn't have a .to_json method. So, it's throwing up an error while rendering the view. Is there an easy way to convert this criteria object into an array without using code like @items.collect {|i| i}


Use the #entries method in criteria to do request:

@items = Item.all.entries


Actually, the solution I'm applying is to transform in an Array, so I can still use the power of criteria and then get the results. After you transform to array, you can transform in json

@items.to_a #give you the records

@items.to_a.to_json # give you the final json


FWIW, at least since Mongoid 4.0, there's the as_json instance method:

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

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

0

精彩评论

暂无评论...
验证码 换一张
取 消