真正的简单问题 - 如何将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
答案 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上找到的参考资料:
答案 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') %>
此处还有一个选定的选项('丹麦')