2009-07-28 62 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') %> 

这里,还有一个选择的选项('丹麦')