#ruby-on-rails #ruby #ruby-on-rails-3
#ruby-on-rails #ruby #ruby-on-rails-3
Вопрос:
Использование acts_as_taggable_on отлично работает. Но генерирует список, разделенный запятыми. Мне интересно, как лучше всего добавить элемент-оболочку и класс к каждому по отдельности. Я смог сделать это в jQuery, но я бы предпочел сделать это в помощнике rails.
ie.
item.tags = "big, bigger, biggest"
item.tag_list = ["big", "bigger", "biggest"]
для отображения как:
<span class="tag">big</span>
<span class="tag">bigger</span>
<span class="tag">biggest</span>
Ответ №1:
Вот помощник, который может сгенерировать список диапазонов на основе отправленного tag_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) %>
который выведет
<span class="tag">tag 1</span>
<span class="tag">tag 2</span>
<span class="tag">tag 3</span>
Ответ №2:
Это может быть более чистым способом сделать это без создания новой функции и сохранения кода в представлении:
<% @item.tag_counts_on(:tags).map(amp;:name).each do |tag| %>
<a href="/search/<%= tag %>">
<span class="tag"><%= tag %></span>
</a>
<% end %>