2016-06-28 17 views
0

これについては多少の質問がありますが、私の問題に対処できないようです。編集時にdbから正しく入力するdate_fieldを取得できないようです。 1つの問題は、私のdbがシリアライズされ、日付が文字列として格納されているという事実にあると思う。Rails 4はDBのdate_fieldを編集時に入力します

私はen.ymlを修正し、この問題のような情報のローカライズを試みた:私は日付オブジェクトを取得するにはRequest.first.person[:dob].to_dateを言うことができるコンソールから、私の見解では、その後

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

Wed, 05 Mar 1986のように表示されますが、フィールドはまだ入力されません。

ありがとうございました。

答えて

0

フォーマッタを動作させるには、有効なDateオブジェクトを渡す必要があります。日付はデータベースに文字列として格納され、文字列はフォーマッタが入力として取得するものです。

これを処理する方法の1つは、モデルの属性リーダーを無効にするか、値をDateのインスタンスとして返す別のメソッドを追加することです。

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

のでDATE_FIELDは(読み:あるべき)である値 'の私の使用して、有効な日付オブジェクトを受信:L(@ request.personの[:DOB] –

+0

右.to_date'、私はあなたを読んでいません本当に '@ request.person [:dob]'オブジェクトがどのように見えるかを見るために 'date_field'行の前にブレークポイントを置こうとしましたか? –

+0

「Y %-m%-d% "となります。.to_dateで打つと、日付オブジェクトとして 'Wed、1986年3月5日'に戻ります。 –

関連する問題