Rails选择标记+活动记录的默认值

时间:2014-02-17 18:30:39

标签: html ruby-on-rails form-helpers

我正在尝试将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: "" %>

1 个答案:

答案 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