2016-04-13 11 views
0

Birçok kategoriye sahip bir forumum var. Her kategoriyi farklı renklerle etiketlemek istiyorum. Ben her kategori için .red.blue gibi başka bir sınıf ayarlamak için gidiyorum ve belirli bir kategori ile gitmek için Foundation 6 .label sınıfını kullanıyorum. "Site Haberleri" gibi bir kategorim varsa ve onu kırmızıya ayarlamak istersam nasıl giderdim?Her kategoriye farklı renkler içeren bir .label sınıfı nasıl eklenir?

Aşağıdaki kod, ait olduğu kategoriye sahip konuların listesini gösterir. senin kategori başlığı en hoş çok kümesi ise aşağıdaki çözümde karma her başlık eklemek zorunda kalacak çünkü

<% @topics.each do |topic| %> 
<div class='title'> 
    <%= link_to topic.title, topic %> 
</div> 
<div class="category label"> 
    <%= link_to topic.category.title, category_path(topic.category.id) %> 
</div> 
<% end %> 
+0

Kategoriler ayarlanmış mı? veya kullanıcı oluşturdular mı? –

cevap

2

Yasal Uyarı Bu, çalışır.

Ben şahsen draper gibi bir şey kullanabilir veya sadece kendi sunum rulo ama eğer yapabilirsem yardımcıları kaçınıyorum çünkü bu gibi, modeliniz ... sana, yardım bu koyarak değilim gidebiliriz olur görüş alanınızı karıştırıyorlar.

def label_class 
    label_class_map[title] 
end 

private 

def label_class_map 
    { 
    'title-one' => 'red', 
    'Site News' => 'blue' 
    } 
end 

Karmaşıklıklar, koşullu olarak hızlı ve çirkin değildir. Bu yüzden onları bu tür bir mantık için seçiyorum. Açıkça ifadeler, vaka ifadeleri vb. Her şey işe yarayacak olsa da, her ne pahasına olursa olsun onları engellemeye çalışıyorum.

$ category.title = 'Site News' 
$ category.label_class 
# => 'blue' 

Şimdi, görünümünüzde, aşağıdaki gibi uygulayabilirsiniz.

# view 

<div class="category label <%= topic.category.label_class %>"> 
    <%= link_to... 
</div> 

Güncelleme

Bunun yerine Draper veya kendi sunum desen gibi bir şey eklemeden bu konuda gider, lütfen aşağıdaki iş bir yardımcı olarak iş yapabilmektedir.

module CategoriesHelper 
    def label_class_for(category) 
    label_class_map[category.title] 
    end 

    private 

    def label_class_map 
    { 
     'title-one' => 'red', 
     'Site News' => 'blue' 
    } 
    end 
end 

# your view 
<div class="category label <%= label_class_for(topic.category) %>"> 
İlgili konular