2014-02-17 71 views
1

我试图将select tag的默认值设置为saved in the model in active record的值。同时,如果未指定任何值(例如在模型创建时),我想要显示list以选择选择标记的某个字段。选择标记+活动记录的Rails默认值

这是我想做到这一点:

<% 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: "" %> 

回答

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为零,则选择将默认为您的选项的第一个值,即1900

+0

谢谢!完全忘记了这一点。曾经使用过一次:P – JustBasti