0

导轨 3.2.8

在模型中,我无法访问start_date表单中收集的内容。

# form
<div class="field">
  <%= f.label :start_date %><br />
  <%= f.date_select :start_date %>
</div>
<div class="field">
  <%= f.label :total_months %><br />
  <%= f.number_field :total_months %>
</div>


# model
attr_accessible :expire_date, :start_date, :total_months

def total_months=(total)
  write_attribute :expire_date, start_date + 3.months
end

我收到一个nil错误,因为start_date返回 nil。如何获取日期格式的 start_date?

4

1 回答 1

1

您的方法仅覆盖属性的 set 方法total_months,并且您不知道是在设置start_date属性之前还是之后设置(它可能不会按照视图中给出的顺序发生)。尝试write_attribute :expire_date, start_date + 3.monthsbefore_save回调中执行。

所以像:

before_save :do_before_save

def do_before_save
  self.expire_date = start_date + 3.months if start_date
end
于 2013-06-28T02:05:01.930 回答