ruby on rails -在Edit视图的Select字段中预填充记录的正确日期



我在表单中有以下字段,当我加载它以进入新记录开始日期为2016年并下降到1900年时,一切都很好。它将正确地保存到记录中。但是当我去编辑这个记录时,它每次都会加载2016年的日期…

我想让它显示保存到数据库的任何日期。

<%= f.select :year, options_for_select((1900..Date.today.year+1).to_a.reverse), {:prompt => 'Year', :class=>"pointer" } %>

而且这是在一个嵌套的表单中,可能有几个车辆,所以不能只使用记录实例变量。

是这样嵌套的:

 <%= f.fields_for :vehicles do |builder| %>
     <%= render "shipments/partials/vehicle_fields", :f => builder %>
 <% end %>

所有其他字段都可以正常工作…

vehicle_fields:

<section style="margin-bottom: 0;" class="auto-container fields">
  <div class="row">
    <div class="col col-md-2">
      <label class="select">
        <%= f.select :year, options_for_select((1900..Date.today.year+1).to_a.reverse), {:prompt => 'Year', :class=>"pointer" } %>
      </label>
    </div>
    <div class="col col-md-4">
      <label class="input">
        <%= f.text_field :make, :placeholder => "Make" %>
      </label>
    </div>
    <div class="col col-md-4">
      <label class="input">
        <%= f.text_field :model, :placeholder => "Model" %>
      </label>
    </div>
    <div class="col col-md-2">
      <p class="btn btn-primary pull-right" style="margin: 0 0 0 20px"><%= button_to_remove_fields "Remove", f %></p>
    </div>
  </div>
</section>

找到答案了

<%= f.select :year, options_for_select((1900..Date.today.year+1).to_a.reverse, :selected => f.object.year), {:prompt => 'Year', :class=>"pointer" } %>

获取嵌套对象的值,可以这样做:

 f.object.year  <<< in my case i needed the year

最新更新