sim*_*ley 1 ruby ruby-on-rails
我需要将哈希的输出加入到字符串中.
哈希看起来像这样:
 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
最好的方法是什么?我可以轻松地浏览它,但输出有换行符,我需要删除这些以及逗号.
nas.location.walledgardens.collect { |w| w.url }.join(",")
该.collect方法将收集该块返回的所有内容并将其放入一个数组中,然后该连接将该数组放入一个字符串中,由您提供的任何内容(所以逗号)分隔.
你拥有的不是Hash,而是Walledgarden对象的数组(它们看起来是ActiveRecord :: Base子类).
试试这个:
nas.location.walledgardens.collect(&:url).join ","
(注意:#map并且#collect是等效的,所以你选择哪一个应该考虑可读性!)