我已经创建了一个基于简单结构的自定义类,我需要将它取回 JSON:
class ItemTag <
Struct.new(:id, :item_id, :type, :subtype, :top, :left, :height, :width, :name, :alternate, :photo_url, :price, :quantity, :comment, :memo)
def to_map
map = Hash.new
self.members.each { |m| map[m] = self[m] }
map
end
def to_json(*a)
to_map.to_json(*a)
end
end
在我的控制器中,我正在收集这些数据,如下所示:
@tags = design.item_links.all.map{ |pi| ItemTag.new(pi.id,pi.item_id,pi.item.type,pi.item.subtype,pi.top,pi.left,pi.height,pi.width,pi.item.name,pi.item.alternate_name,pi.item.logo_photo(:thumb),pi.price,pi.quantity,pi.public_note,pi.private_note)}
最后,在我看来,我需要将此数据作为 json 字符串传递给 javascript 函数,所以我这样做:
<%= raw(@tags.to_json) %>
我得到的输出看起来像这样:
[[\"1b245b45\",\"444dc0e6\",\"plant\",\"cactus\",94,661,110,174,\"Blue mistflower\",\"conoclinium coelestinum\",\" \",56.0,4,\"test\",\"test\"],[\"21e8db0c\",\"3097c392\",\"plant\",\"bamboo\",128,108,161,100,\"Green and gold\",\"chrysogonum virginianum\",\" \",76.0,5,\"this is very green\",\"dont tell them it has gold\"]]
如果我将 to_json 放在控制器的地图操作中,它会为每条记录生成有效的 json,但它不会给我所有对象的数组作为 JSON。
有任何想法吗?