3

在使用可表示的 gem时,我希望将一个对象嵌套在一个数组中,该数组只有一个对象。我看不出如何做到这一点。有任何想法吗?其原因在于 Google 跟踪代码管理器如何处理增强型电子商务跟踪。

nested 'products' do
  property :name, getter: lambda{|*| name }
  property :id
end

会吐槽:

"products": {
  "name" : "Nike Swoosh",
  "id" : 8
}

当我想要出来时:

"products": [ {
  "name" : "Nike Swoosh",
  "id" : 8
} ] 
4

1 回答 1

1

您可以只使用可表示模块中的集合。虽然你只有一个对象,但你想将它包装在一个数组中。从技术上讲,它变成了一个包含单个对象的集合。然后在父对象中定义一个具有该集合名称的 getter。这是一个例子:

require 'ostruct'
require 'representable'
require 'representable/json'

class Order < Struct.new(:order, :product)

   def products
     [product]
   end  
end

module OrderRepresenter
  include Representable::JSON

  property :name
  collection :products
end


sale = Order.new(name: "An order name", product: {name: "My Product", id: 1})
p sale.extend(SaleRepresenter).to_json
于 2015-07-31T08:32:04.560 回答