Самый эффективный способ получить список строк с разделителем пробелов - PullRequest
3 голосов
/ 01 мая 2011

Проект может иметь много тегов.При редактировании проекта я хотел бы перечислить все теги в поле ввода (стиль stackoverflow).В Rails 3 у меня есть следующий код, где я помещаю все свои имена в массив перед вызовом join(' '), но есть ли более быстрый / более элегантный способ?

@tags = @project.tags

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

@tags_string = @tags_array.join(' ')

Ответы [ 2 ]

6 голосов
/ 01 мая 2011

Может быть, вам нужен метод Enumerable#collect:

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

Collect пригодится, когда вы пытаетесь преобразовать один список в другой список одинакового размера, что в точности соответствует шаблону.

Часть &:name означает «имя метода вызова для данного объекта» и может быть записана как { |t| t.name } эквивалентно.

Библиотека Enumerable действительно великолепна, и вам следует ознакомиться с ней и ознакомиться с различными методами, поскольку она может сэкономить массу времени.

0 голосов
/ 01 мая 2011

Одним из способов является использование потоков при переборе массива @tags. Посмотрите на эту отличную статью http://rubysource.com/threading-ruby/

Во-вторых, похоже, @tag - это массив Я бы использовал map, чтобы вернуть массив имен, а затем соединить их со строкой

names = @tags.map{|tag| tag.name}.join(' ')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...