Rails groups_options_for_select没有填充编辑操作

时间:2013-12-02 16:35:39

标签: ruby-on-rails forms ruby-on-rails-4

我有一个包含两个字段的表单,第二个字段取决于第一个下拉列表中选择的内容,如果我在第一个下拉列表中选择“亚洲”,则“日本”和“中国”在第二个下拉列表中显示为选项。 / p>

    .field
     = f.label :country
     = f.select :country, ['Asia', 'Europe'], :prompt => 'Select One'

   .field
     = f.label :category
     = f.select :category,grouped_options_for_select(MyModel::CATEGORIES, nil, "Please Select")

CATEGORIES变量看起来像;

CATEGORIES = {
    'Asia'=> [ 'Japan','China'],
    'Europe'=> [ 'Ireland', 'France']
    }

这样可行但是当我进入编辑页面时,第二个下拉列表没有预先填充存储的值,我该怎么做?

2 个答案:

答案 0 :(得分:5)

@dax是正确的,但您需要显式设置所选值而不仅仅是属性。来自api

  

selected_key - 一个值等于其中一个标记的值属性,该属性将设置所选属性。注意:此值可以匹配多个选项,因为您可能在多个组中具有相同的选项。然后每个人都会被选中=“被选中”。

您的代码应为

= f.select :category, grouped_options_for_select(MyModel::CATEGORIES, f.object.category)

修改

传递给grouped_options_for_select的最后一个参数应该传递给select,而应该是promptinclude_blank选项的值。

= f.select :category,
  grouped_options_for_select(MyModel::CATEGORIES, f.object.category),
  { prompt: 'Please select' }, # here goes the select tag options
  { class: 'my-class' }        # here goes the html options

答案 1 :(得分:0)

您已将selected key设置为nil -

MyModel::CATEGORIES, # nil #, "Please Select"

尝试将代码更改为:

= f.select :category,grouped_options_for_select(MyModel::CATEGORIES, :country, "Please Select")