在Rails中分组选择

时间:2009-07-28 09:02:24

标签: ruby-on-rails ruby

真正的简单问题 - 如何将select(ActionView :: Helpers :: FormOptionsHelper)与分组选项一起使用?

我已经使用了select_tag(ActionView :: Helpers :: FormTagHelper),但我真的希望使用select标签来匹配表单的其余部分。这可能吗?

我的选项如下:

[
  ['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

2 个答案:

答案 0 :(得分:22)

修改

更正,因为你正在使用数组,所以你需要grouped_options_for_select

示例:

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 Way(tm)做你要求的是使用select_tag和grouped_options_for_select:

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

当你走出Rails的人迹罕至的道路时会发生这种情况。 :)

以下是我刚在google上找到的参考资料:

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

答案 1 :(得分:6)

您也可以使用Hash而不是嵌套数组:

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


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

此处还有一个选定的选项('丹麦')