3

表現可能な gemを使用して、配列内にオブジェクトをネストしようとしています。その配列にはオブジェクトが 1 つしかありません。これを達成する方法がわかりません。何か案は?これは、Google タグ マネージャーが拡張 e コマース トラッキングを処理する方法によるものです。

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

表現可能なモジュールでコレクションを使用できます。オブジェクトは 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 に答える