我需要将哈希的输出加入到字符串中。
哈希看起来像这样:
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
最好的方法是什么?我可以轻松地查看它,但输出有换行符,我需要删除这些以及逗号。
答案 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 ','