Rails 4在编辑时从db填充date_field

时间:2016-06-28 16:24:00

标签: ruby-on-rails date ruby-on-rails-4 datefield

关于此问题有很多问题,但似乎没有一个问题可以解决我的问题。似乎无法在编辑时从db中正确填充date_field。我认为一个问题可能在于我的数据库被序列化并且日期被存储为字符串。

我尝试修改en.yml并本地化信息,如:Rails date format in form field

#en.yml
  date:
    formats:
      default: "%d/%m/%Y"

然后在我看来

#edit.html.erb
<%= person.label :dob, "Date of Birth" %>
<%= person.date_field :dob, as: :date, value: l(@request.person[:dob].to_date, format: :default), required: true %>

在控制台中我可以说Request.first.person[:dob].to_date来获取Wed, 05 Mar 1986之类的日期对象,但它仍然不会填充该字段。

任何指导都会被批准,谢谢。

1 个答案:

答案 0 :(得分:0)

要使格式化程序工作,您需要将其传递给有效的Date对象。您提到日期在数据库中存储为字符串,字符串是格式化程序获取的输入。

处理它的一种方法是覆盖模型中的属性读取器,或者添加另一个方法,将该值作为Date的实例返回。

class Person < ActiveRecord::Base
  ...
  def date_field
    read_attribute(:date_field).to_s.to_date
  end    
end