0

私はこれを持っています:

produtos = LineItem.select('codigosku, quantity').where("cart_id = #{session[:cart_id] } ")

ここに、この選択 (製品変数) の結果を挿入する必要があります。

message = Hash.new
      message = { 
        "tem:carrinho" => {"gpa:CEP" => params[:cep],
                      "gpa:CNPJ" => 'doc', 
                      "gpa:IdCampanha" => 1111, 
                      "gpa:Produtos" => {"gpa:DadosListaProdutoCarrinhoDTO" => 
                          {

                               HERE! VALUES OF "PRODUTOS VARIABLE"


                          }
                        }
                      }
                }

これどうやってするの?

前もって感謝します!

4

2 に答える 2

1

apneadiving の例のように、map を使用して製品データから配列を作成します。attributes選択したデータからすべてのデータ (ハッシュ) を返すために使用します

message = { 
  "tem:carrinho" => {
    "gpa:CEP" => params[:cep],
    "gpa:CNPJ" => 'doc', 
    "gpa:IdCampanha" => 1111, 
    "gpa:Produtos" => {
      "gpa:DadosListaProdutoCarrinhoDTO" => produtos.map { |item| item.attributes } 
    } 
  }
}

または、製品のキーについてより具体的にし、初期化後に追加する必要がある場合

# initialize the Produtos to nil
message = { 
  "tem:carrinho" => {
    "gpa:CEP" => params[:cep],
    "gpa:CNPJ" => 'doc', 
    "gpa:IdCampanha" => 1111, 
    "gpa:Produtos" => nil
  }
}        

# build an array of DadosListaProdutoCarrinhoDTO
list = produtos.map do |item| 
  {
    "gpa:DadosListaProdutoCarrinhoDTO" => {
      "codigosku" => item.codigosku, 
      "quantity" => item.quantity
    }
  }
end

# set the Produtos key to an array of DadosListaProdutoCarrinhoDTO
message["tem:carrinho"].merge!({ "gpa:Produtos" => list })
于 2013-06-28T16:28:16.957 に答える