簡體   English   中英

選擇下拉列表和每個塊 - Ruby / Rails

[英]select dropdown and each block - Ruby/Rails

我有一個簡單的each塊,它采用每個類別並創建一個option

@categories = Category.all

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

對於Men and Women (所以c.name)類別我想要的是用<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>

謝謝

最后我實現了這個解決方案,我仍然覺得這可以更優雅地完成

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>

有一種稱為partition的漂亮方法,它將項目分為兩組。

控制器:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM