数组中的RoR字符串

时间:2016-03-27 10:54:33

标签: ruby-on-rails arrays ruby string

我有map

生成的哈希数组
arr = current_order.order_items.map{|oi|[{name:oi.name,price:oi.price}]

[{:name=>"Jacket", :price=>300},
 {:name=>"Bag", :price=>650 },
 {:name=>"Suit", :price=>300}].to_s

我需要像这样从中创建一个字符串

name: Jacket,price:300
name: Bag,price:650
name: Suit,price:300

我做了gsub每个需要的元素gsub(':size=>','size:')

但它看起来很丑陋

需要更方便的解决方案

2 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

  1. 在哈希上定义一个函数,为你打印它。
  2. map在数组上为每个数组获得漂亮的打印字符串。

    def pretty_print(hash)
      hash.map {|key, value| "#{key}: #{value}"}.join(', ')
    end
    arr.map {|hash| pretty_print(hash)}
    

答案 1 :(得分:2)

如果预定了钥匙:

arr.map { |item| "name:#{ item[:name] }, price:#{ item[:price] }" }.join("\n")

如果不是:

arr.map { |item| item.map { |k, v| "#{ k }:#{ v }" }.join(', ')  }.join("\n")