一个项目可以有很多标签。编辑项目时,我想在输入字段中列出所有标签(stackoverflow 样式)。在 Rails 3 中,我有以下代码,我在调用 join(' ')
之前将我所有的名字放入一个数组中,但是有没有更快/更优雅的方法?
@tags = @project.tags
@tags_array = []
@tags.each do |tag|
@tags_array << tag.name
end
@tags_string = @tags_array.join(' ')
最佳答案
也许你想要的是 Enumerable#collect
方法:
@tags_string = @project.tags.collect(&:name).join(' ')
当您尝试将一个列表转换为另一个大小相等的列表时,Collect 会派上用场,这正是此处的模式。
&:name
部分表示“给定对象上的调用方法名称”,可以拼写为 { |t| t.name }
等效。
Enumerable 库真的很棒,您应该通读一下并熟悉各种方法,因为它可以为您节省大量时间。
关于ruby-on-rails - 获取带有空格分隔符的字符串列表的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5850682/