rap*_*tle 1 forms ruby-on-rails ruby-on-rails-4
我有一个有两个字段的表单,其中第二个取决于第一个下拉列表中选择的内容,如果我在第一个下拉列表中选择"亚洲",那么"日本"和"中国"在第二个下拉列表中显示为选项.
.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")
Run Code Online (Sandbox Code Playgroud)
CATEGORIES变量看起来像;
CATEGORIES = {
'Asia'=> [ 'Japan','China'],
'Europe'=> [ 'Ireland', 'France']
}
Run Code Online (Sandbox Code Playgroud)
这有效,但当我进入编辑页面时,第二个下拉列表没有预先填充存储的值,我该怎么做?
@dax是正确的,但您需要显式设置所选值而不仅仅是属性.来自api
selected_key - 一个值等于其中一个标记的value属性,它将具有所选的属性集.注意:此值可以匹配多个选项,因为您可能在多个组中具有相同的选项.然后每个将被选中="选中".
你的代码应该是
= f.select :category, grouped_options_for_select(MyModel::CATEGORIES, f.object.category)
Run Code Online (Sandbox Code Playgroud)
编辑
传递给的最后一个参数grouped_options_for_select应该传递给它,select并且应该是prompt或者include_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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
966 次 |
| 最近记录: |