我有一个rails应用程序,它有两个表单来编辑同一个表,第一个表单是new.html.erb,里面是基本信息,用文本字段填充,第二个表单是edit.html.erb,它和第一个表单类似,但是增加了一些options_for_select
字段。
如果用户尚未将此信息添加到表中,我希望选择字段的选项具有空值的默认选择。如果用户已保存此信息,则应预先选择该选项。
然而,每当我向这些字段添加空值选项时,信息会保存到数据库中,但下次数据不会显示为预选选项。
以下是我尝试过的两种方法:
<%= f.select( :attribute1, options_for_select(
[
["Select your attribute", "", { disabled: true }],
["option1", "option1"],
["option2","option2"]
],""))
%>
字符串
和
<%= f.select( :attribute1, options_for_select(
[
["Select your attribute", ""],
["option1", "option1"],
["option2","option2"]
],""))
%>
型
这两种情况都会导致数据被保存到数据库中,但在刷新时不会显示在表单中。但是,以下代码会在刷新时显示数据:
<%= f.select( :attribute1, options_for_select(
[
["option1", "option1"],
["option2","option2"]
],""))
%>
型
然而,这一个的问题是,如果用户还没有保存任何东西,option1是第一个选择,这是我不希望的,因为如果用户不小心绕过这个问题,他们应该得到一个验证错误,告诉他们它是空的,但是使用这个代码,一个选项被预先选择为默认值,而不是空选项。
2条答案
按热度按时间2cmtqfgy1#
options_for_select
生成实际选项标记:字符串
您必须指定选择哪个选项作为第二个参数:
型
或者只传递一个数组给
select
:型
ssm49v7z2#
你可以在你的option_select中添加incude_blank,它会添加一个第一个可见的行,这样用户就知道他们需要选择一个选项,在编辑时你可以从params中传递默认值,
字符串