使 RoR 嵌套可表示为数组
Make RoR nested representable into an array
在使用 representable 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
} ]
您可以只使用可表示模块中的集合。尽管您只有一个对象,但由于您想将其包装在一个数组中。从技术上讲,它成为具有单个对象的集合。然后在父对象中用该集合名称定义一个 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
在使用 representable 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
} ]
您可以只使用可表示模块中的集合。尽管您只有一个对象,但由于您想将其包装在一个数组中。从技术上讲,它成为具有单个对象的集合。然后在父对象中用该集合名称定义一个 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