2016-04-13 35 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) %>"> 
相关问题