将数组转换为字符串

时间:2012-05-14 20:21:36

标签: ruby-on-rails ruby

我需要将哈希的输出加入到字符串中。

哈希看起来像这样:

 nas.location.walledgardens.to_s

  => "[#<Walledgarden id: 1, location_id: 12, url: \"polka.com\", created_at: \"2012-05-14 17:02:47\", updated_at: \"2012-05-14 17:02:47\">, #<Walledgarden id: 2, location_id: 12, url: \"test.com\", created_at: \"2012-05-14 17:02:47\", updated_at: \"2012-05-14 17:02:47\">, #<Walledgarden id: 3, location_id: 12, url: \"help.com\", created_at: \"2012-05-14 17:02:47\", updated_at: \"2012-05-14 17:02:47\">, #<Walledgarden id: 4, location_id: 12, url: \"yell.com\", created_at: \"2012-05-14 17:02:47\", updated_at: \"2012-05-14 17:02:47\">, #<Walledgarden id: 5, location_id: 12, url: \"sausage.com\", created_at: \"2012-05-14 17:02:47\", updated_at: \"2012-05-14 17:02:47\">]" 

我需要将url值加入以下格式:

polka.com,test.com,help.com

最好的方法是什么?我可以轻松地查看它,但输出有换行符,我需要删除这些以及逗号。

3 个答案:

答案 0 :(得分:6)

nas.location.walledgardens.collect { |w| w.url }.join(",")

.collect方法将收集该块返回的所有内容并将其放入数组中,然后连接将该数组放入一个字符串中,由您提供的任何内容分隔(所以逗号)。

答案 1 :(得分:6)

你拥有的不是Hash,而是Array个Walledgarden对象(它们看起来是ActiveRecord::Base子类)。

试试这个:

nas.location.walledgardens.collect(&:url).join ","

(注意:#map#collect是等效的,因此您选择哪一个应该考虑可读性!)

答案 2 :(得分:4)

使用Array#map

nas.location.walledgardens.map(&:url).join ','