2016-04-13 10 views
0

私は多くのカテゴリを持つフォーラムを持っています。私は、各カテゴリに異なる色でラベルを付けたいと思います。私は.red.blueのような別のクラスを設定しようとしている各カテゴリ名に対してFoundation 6 .labelクラスを使用しています。私が「サイトニュース」のようなカテゴリを持っていて、それを赤く設定したいのであれば、どうすればいいですか?各カテゴリに異なる色の.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) %>"> 
関連する問題