最有效的方法来获取带空格分隔符的字符串列表

Cia*_*her 3 ruby ruby-on-rails

一个项目可以有很多标签.编辑项目时,我想列出输入字段中的所有标记(stackoverflow样式).在Rails 3中,我有以下代码,在调用之前我将所有名字都推送到数组中,join(' ')但是有更快/更优雅的方式吗?

@tags = @project.tags

@tags_array = []
@tags.each do |tag|
  @tags_array << tag.name
end

@tags_string = @tags_array.join(' ')
Run Code Online (Sandbox Code Playgroud)

tad*_*man 6

也许你想要的是Enumerable#collect方法:

@tags_string = @project.tags.collect(&:name).join(' ')
Run Code Online (Sandbox Code Playgroud)

当你试图将一个列表转换为另一个相同大小的列表时,Collect会派上用场,这正是这里的模式.

&:name部分意味着"在给定对象上调用方法名称",并且可以{ |t| t.name }等同地拼写出来.

Enumerable库非常棒,您应该仔细查看它并熟悉各种方法,因为它可以为您节省大量时间.