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

时间:2011-05-01 19:15:34

标签: ruby-on-rails ruby

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

@tags = @project.tags

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

@tags_string = @tags_array.join(' ')

2 个答案:

答案 0 :(得分:6)

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

@tags_string = @project.tags.collect(&:name).join(' ')

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

&:name部分表示“在给定对象上调用方法名称”,并且可以等同于{ |t| t.name }拼写。

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

答案 1 :(得分:0)

一种方法是在迭代@tags数组时使用线程。看看这篇优秀的文章http://rubysource.com/threading-ruby/

其次看来@tag是一个数组 我会使用map返回一个名字数组,然后将它们连接到一个字符串

names = @tags.map{|tag| tag.name}.join(' ')