Добавление класса css к отдельным тегам в Rails с помощью acts_as_taggable_on

#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 %>