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)
也许你想要的是Enumerable#collect方法:
@tags_string = @project.tags.collect(&:name).join(' ')
Run Code Online (Sandbox Code Playgroud)
当你试图将一个列表转换为另一个相同大小的列表时,Collect会派上用场,这正是这里的模式.
该&:name部分意味着"在给定对象上调用方法名称",并且可以{ |t| t.name }等同地拼写出来.
Enumerable库非常棒,您应该仔细查看它并熟悉各种方法,因为它可以为您节省大量时间.
| 归档时间: |
|
| 查看次数: |
556 次 |
| 最近记录: |