我在使用groups_options_for_select填充选项组的Rails中的选择框时遇到一些困难.
我目前有3个实例变量,我想将其添加到分组选择框的一个整个分组数组中.
例如,我有:
@fruits (which contains the object(s)) --- !ruby/object:Fruits attributes: id: 2 name: Banana @veggies (which contains the object(s)) --- !ruby/object:Veggies attributes: id: 23 name: Celery --- !ruby/object:Veggies attributes: id: 24 name: Carrots @junk_food (which contains the object(s)) --- !ruby/object:Junk attributes: id: 11 name: Snickers --- !ruby/object:Junk attributes: id: 12 name: Ice Cream
我的问题是:如何将这3个实例变量转换为分组选择,如:
<select> <optgroup label="Fruits"> <option value="2">Banana</option> </optgroup> <optgroup label="Veggies"> <option value="23">Celery</option> <option value="24">Carrots</option> </optgroup> <optgroup label="Junk"> <option value="11">Snickers</option> <option value="12">Ice Cream</option> </optgroup> </select>
food_controller.erb
@fruits = Fruit.all @veggies = Veggies.all @junk_food = JunkFood.all # Then, I'd create the array here using the items above?
我知道我应该使用grouped_items_for_select,但我继续遇到一堆错误,我不确定这样做的正确方法.
grouped_options_for_select方法确实是正确的. 由于您尚未提供代码,因此应该会产生所需的分组选项:grouped_options_for_select [['Fruits', @fruits.collect {|v| [ v.name, v.id ] }], ['Veggies', @veggies.collect {|v| [ v.name, v.id ] }], ['Junk', @junk_food.collect {|v| [ v.name, v.id ] }]]
哪个可用于创建下拉列表:
select_tag 'Food', grouped_options_for_select(...)
或者使用form_helper:
f.select :food_attribute, grouped_options_for_select(...)
精彩评论