Acts_as_taggable_on ile Rails içindeki tek tek etiketlere css sınıfı ekle

Acts_as_taggable_on kullanımı harika çalışıyor. Ancak virgülle ayrılmış bir liste oluşturur. Her biri için bir sarmalayıcı öğesi ve sınıf eklemenin en iyi yolunu merak ediyorum. Bunu jQuery'de yapabildim, ancak daha çok bir ray yardımcıında yapmayı tercih ederim.

yani.

item.tags = "big, bigger, biggest"
item.tag_list = ["big", "bigger", "biggest"]

işlemek için:

big
bigger
biggest
0

2 cevap

Burada gönderilen tag_list'e dayalı bir liste listesi oluşturabilen bir yardımcıdır.

def tags(tag_list)
  markup = ""
  tag_list.each do |tag|
    markup += content_tag(:span, tag, :class => "tag")
  end
  raw(markup)
end

Daha sonra şöyle diyeceksin:

<%= tags(item.tag_list) %>

hangi çıktı olacak

tag 1
tag 2
tag 3
2
katma
güncellenen kod, şimdi test çalıştıktan sonra çalışmadı
katma yazar nheinrich, kaynak
Rica ederim!
katma yazar nheinrich, kaynak
Bunu seviyorum. ÇALIŞIYOR bir cazibe gibi. Çok teşekkürler nheinrich ...
katma yazar Adam, kaynak

Bu, yeni bir işlev oluşturmadan ve kodu görünümde tutmadan temizlemenin daha temiz bir yolu olabilir:

<% @item.tag_counts_on(:tags).map(&:name).each do |tag| %>
   
    <%= tag %>
   
<% end %>
1
katma
+1 temizleyici yaklaşım
katma yazar lucapette, kaynak