[英]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.