2009-07-28 44 views
9

真正的簡單問題 - 如何將select(ActionView :: Helpers :: FormOptionsHelper)與分組選項一起使用?分組在軌道中選擇

我得到它與一個select_tag(ActionView :: Helpers :: FormTagHelper)工作,但我真的很想要使用選擇標籤來匹配窗體的其餘部分。這可能嗎?

我的選擇是這樣的:

[ 
    ['Group 1', ["Item 1", "Item 2", "Item 3"]], 
    ['Group 2',["Item 1", "Item 2", "Item 3", "Item 4"]] 
] 

,而我的看法是目前:

%tr#expense 
    %td 
    = f.text_field :value 
    = f.hidden_field :type, :value => mode 

回答

22

編輯

修正,因爲你使用數組,你需要grouped_options_for_select

E xample:

grouped_options = [ 
    ['Group 1', 
    ["Item 1", "Item 2", "Item 3"]], 
    ['Group 2', 
    ["Item 1", "Item 2", "Item 3", "Item 4"]] 
] 
grouped_options_for_select(grouped_options) 

打印如下:

<optgroup label="Group 1"> 
    <option value="Item 1">Item 1</option> 
    <option value="Item 2">Item 2</option> 
    <option value="Item 3">Item 3</option> 
</optgroup> 
<optgroup label="Group 2"> 
    <option value="Item 1">Item 1</option> 
    <option value="Item 2">Item 2</option> 
    <option value="Item 3">Item 3</option> 
    <option value="Item 4">Item 4</option> 
</optgroup> 

注意,您必須提供自己的選擇標籤來包裝這個。沒有選擇功能,將爲你做分組,只是這種方法。

你應該克服你的沉默。 Rails的方式(TM)做你問什麼是使用select_tag與grouped_options_for_select:

<%= select_tag "foo[bar]", 
grouped_options_for_select(@bars) %> 

這是當你拿去Rails的因循守舊會發生什麼。 :)

這是我剛剛在谷歌找到了一個參考:

http://www.ruby-forum.com/topic/185407

+0

你在實踐中是否有這樣的例子?我在文檔中看到了這一點,但無法弄清楚如何讓它工作。 – 2009-07-28 09:11:32

6

您也可以使用哈希代替嵌套的數組:

grouped_options = { 
'North America' => [['United States','US'], 'Canada'], 
'Europe' => ['Denmark','Germany','France'] 
} 


<%= select_tag "foo[bar]", 
grouped_options_for_select(grouped_options, 'Denmark') %> 

這裏,還有一個選擇的選項('丹麥')