【发布时间】:2014-12-18 11:53:37
【问题描述】:
我有一个具有name 和area 属性的Location 模型。我想创建一个选择输入字段,我的选项在其中分组,如下所示:
<optgroup label="Area1">
<option value=1>Location 1</option>
<option value=2>Location 2</option>
<option value=3>Location 3</option>
</optgroup>
<optgroup label="Area2">
<option value=4>Location 4</option>
<option value=5>Location 5</option>
<option value=6>Location 6</option>
</optgroup>
我在控制器和视图中尝试了以下操作:
控制器:
@grouped_locations = Location.pluck(:area, :name).group_by(&:first).
map { |k, v_ary| [k, v_ary.map(&:last)] }.
map { |k, v_ary| [k, v_ary.map.with_index { |v, i| [v,i+1] }] }
查看:
<%= f.select :location_id grouped_options_For_select(@grouped_locations)
上面的代码给我一个带有重复值的选择字段,如下所示:
<optgroup label="Area1">
<option value=1>Location 1</option>
<option value=2>Location 2</option>
<option value=3>Location 3</option>
</optgroup>
<optgroup label="Area2">
<option value=1>Location 4</option>
<option value=2>Location 5</option>
<option value=3>Location 6</option>
</optgroup>
如何设置grouped_locations 数组,使值不会像第一个示例中那样重复?
【问题讨论】:
标签: ruby arrays ruby-on-rails-4