我正在尝试将select tag
的默认值设置为saved in the model in active record
的值。同时,如果未指定任何值(例如,在模型创建时),我希望显示list
以选择选择标记的特定字段。
这就是我想要的方式:
<% valid_years = Array.new %>
<% for i in 1900..Time.now.year %>
<% valid_years << i %>
<% end %>
<%= f.label t :label_year_of_birth %>
<%= f.select :year_of_birth, options_for_select(valid_years), class: "" %>
但是,在此选择标记中,活动记录中保存的值为not displayed
。而是显示数组的第一个值。另外,如果我写options_for_select(valid_years, 1950)
,rails将不会将该值设置为1950。
但是,如果我使用简单的text field tag
,则rails会将保存的值放入其中。
<%= f.label t :label_year_of_birth %>
<%= f.text_field :year_of_birth, class: "" %>
答案 0 :(得分:2)
替换
<%= f.select :year_of_birth, options_for_select(valid_years), class: "" %>
用
<%= f.select :year_of_birth, options_for_select(valid_years, form_for_object_name.year_of_birth), class: "" %>
,其中
form_for_object_name
是您传递给表单的对象,因为您没有共享<%= form_for(?) do |f| %>
。
options_for_select
将第二个参数,即form_for_object_name.year_of_birth
作为selected
值。
如果form_for_object_name.year_of_birth
为零,那么select将默认为您选项的第一个值,例如1900
。