2016-04-13 37 views
0

我有一個論壇,有很多類別。我想用不同的顏色標記每個類別。我爲每個類別名稱使用Foundation 6 .label類,我將要設置另一個類,如.red.blue等等以符合特定類別。如果我有一個類似「網站新聞」的類別,我想如何設置它爲紅色?如何向不同顏色的每個類別添加一個.label類?

下面的代碼顯示了它所屬類別的主題列表。

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

是否設置了類別?或者他們是用戶生成的? –

回答

2

免責聲明這個工作,如果你的類別標題的是相當多集,因爲你將不得不添加的每個標題中的哈希在下面的解決方案。

我會親自使用類似draper或剛剛推出自己的主持人,但是這可能走在你的模型......我不把這個在一個幫手,因爲我嘗試,如果我能避免幫手,如他們混亂了你的視野範圍。

def label_class 
    label_class_map[title] 
end 

private 

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

散列速度很快,不像條件那樣醜陋。這就是爲什麼我選擇他們這種邏輯。顯然,如果陳述,案例陳述等都可以發揮作用,但我會盡全力避免它們。

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

現在,在您看來,您可以按如下方式應用它。

# view 

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

更新

如果你寧願去了解這一點沒有添加類似布店或您自己的演示模式,下面將會把工作作爲輔助完成。

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) %>"> 
相關問題