2016-07-27 17 views
4

私は、各カテゴリを取り、私はカテゴリMen and Women(そうCとしたいと思い何option選択ドロップダウンし、各ブロック - ルビー/ Railsの

@categories = Category.all 

<select id="bike_category_filter" multiple="multiple"> 
    <% @categories.each do |c| %> 
    <option value="<%= c.name %>"><%= c.name %></option> 
    <% end %> 

を作成する簡単なeachブロックを持っています。名前)は<optgroup>タグで囲みます。どのように私は必ずしも私に所望の出力が感謝

<select> 
    <optgroup label="Gender"> 
    <option value="cat1">Men</option> 
    <option value="cat2">Women</option> 
    </optgroup> 
    <option value="cat3">Cat5</option> 
    <option value="cat4">Cat4</option> 
</select> 

のようになります答え

を与えるために誰かを探していない、見てする場所のリソースまたは説明へのリンクが十分である、ことを達成できます

+0

カテゴリは 'Men'または' Woman'のためにある特定の基準は何ですか? – hgsongra

+0

あなたはその価値がどのように集まっているのかを意味しますか?もし 'c.name'なら – Richlewis

+0

あなたの必要なこのhttps://jsfiddle.net/6tqamxvz/出力? – hgsongra

答えて

0

私はこのソリューションを実装最後に、私はまだ、これは、よりエレガントに

Controller 

@gender_categories = Category.where(name: ['Mens', 'Womens']) 
@categories = Category.where.not(name: ['Mens', 'Womens']) 

View 

<select id="bike_category_filter" multiple="multiple"> 
    <optgroup label="Gender"> 
    <% @gender_categories.each do |c| %> 
     <option value="<%= c.name %>"><%= c.name %></option> 
    <% end %> 
    </optgroup> 

    <optgroup label=" Bike Type"> 
    <% @categories.each do |c| %> 
     <option value="<%= c.name %>"><%= c.name %></option> 
    <% end %> 
</optgroup> 
</select> 
0

呼ばれる気の利いた方法があります行うことができると感じていますは、項目を2つのグループにグループ化します。

コントローラ:

@primary_group, @secondary_group = Category.all.partition { |c| c.name == 'Men' or c.name == 'Woman'} 

ビュー

<select id="bike_category_filter" multiple="multiple"> 
    <optgroup label="Gender"> 
    <% @primary_group.each do |c| %> 
     <option value="<%= c.name %>"><%= c.name %></option> 
    <% end %> 
    </optgroup> 

    <% @secondary_group.each do |c| %> 
    <option value="<%= c.name %>"><%= c.name %></option> 
    <% end %> 
</select> 
+0

答えをありがとう、ビューではないいいえです。あなたには時間がかかることを感謝します。 – Richlewis

+0

あなたは正しいです。私は私の答えを編集しました。 – user1201917