Использование act_as_taggable_on отлично работает. Но генерирует список, разделенный запятыми. Мне интересно, как добавить каждый элемент оболочки и класс по отдельности. Я смог сделать это в jQuery, но я бы скорее сделал это в помощнике рельсов.
то есть.
item.tags = "big, bigger, biggest"
item.tag_list = ["big", "bigger", "biggest"]
отображать как:
big
bigger
biggest
Вот помощник, который может генерировать список пролетов на основе отправленного тега_list.
def tags(tag_list)
markup = ""
tag_list.each do |tag|
markup += content_tag(:span, tag, :class => "tag")
end
raw(markup)
end
Вы бы назвали это с помощью:
<%= tags(item.tag_list) %>
который будет выводить
tag 1
tag 2
tag 3
Это может быть более чистый способ сделать это, не создавая новую функцию и не сохраняя код в представлении:
<% @item.tag_counts_on(:tags).map(&:name).each do |tag| %>
<%= tag %>
<% end %>