2016-06-28 2 views
0

많은 질문이 있지만 문제는 해결되지 않습니다. 편집시 db에서 올바르게 채우기 위해 date_field를 가져올 수 없습니다. 하나의 문제는 내 db가 serialize되고 날짜가 문자열로 저장된다는 사실에 있다고 생각합니다. 내가 날짜 개체를 가져 Request.first.person[:dob].to_date 말할 수있는 콘솔에서 내보기레일 4는 DB에서 date_field를 입력하여 편집합니다.

#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 %> 

에서 다음 Rails date format in form field

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

:

나는 en.yml를 수정하고이 질문에 같은 정보를 현지화 노력 Wed, 05 Mar 1986과 같지만 필드를 채우지는 않습니다.

감사드립니다. 감사합니다.

답변

0

포맷터를 작동 시키려면 유효한 Date 객체를 전달해야합니다. 날짜는 데이터베이스에 문자열로 저장되고 문자열은 포맷터가 입력으로 가져온 문자열입니다.

처리하는 한 가지 방법은 모델의 특성 판독기를 무시하거나 값을 Date의 인스턴스로 반환하는 다른 메서드를 추가하는 것입니다. 값`내 사용에 의해 유효한 날짜 객체를 수신 : L (@ request.person의 [: 생년월일] :

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

는 그래서 DATE_FIELD은 (해야 읽기)입니다 .to_date' –

+0

오른쪽, 내가 읽지 않은 당신의 질문을 신중하게, 미안 해요.'date_field' 라인 이전에 중단 점을 멈추고 실제'@ request.person [: dob] '객체가 어떻게 보이는지 보려고 했습니까? –

+0

그래, "Y % -m % -d % "순서로 .to_date를 치면 날짜 객체로 1986 년 3 월 5 일 수요일로 되돌아갑니다. –

관련 문제