2017-08-26 5 views
0

私はユーザーにdatepickerを提示する必要があるRails 4アプリを持っていますが、表示される日付はMM-DD-YYYYの形式でなければなりません。 Railsに日付を送るとき、ActiveRecordはフォーマットを認識しません。私はそれが予期しているように、YYYY-MM-DDです。検証は失敗します(日付はありません)。次のようにDatepickerはRailsのバックエンドに日付形式を選択しました

JSは次のとおりです。

$("#some_date").datetimepicker 
    pickTime: false 
    format: 'MM-DD-YYYY' 

(画面が表示されます見事日付ピッカーで素晴らしい作品)。

その後、私のスリムテンプレート:

= f.input :date, as: :string, label: false, input_html: { class: 'form-control', value: @visit.date.strftime('%m-%d-%Y') } 
p.help-block MM-DD-YYYY 

私はYYYY-MM-DDに形式を変更した場合、それは完璧に動作しているよう日付は、PostgreSQLに保存されているが、米国では、日付は通常MM-DD-YYYYとして表示されます。

また、ヘルパーメソッドに関与したり、各コントローラの日付をhtml入力から変換してPostgreSQLが満足できるようにしたくない場合もあります。私はそれがバックエンドに行くように日付形式を変更できるいくつかの方法があるのだろうかと思っていたのですか?私config/locales/en.yml

は、私が持っているん:

date: 
    formats: 
    default: '%m/%d/%Y' 

乾杯を!

答えて

0

ブートストラップdatetimepickerには、サーバーに送信する代替形式のオプションがないようです。しかし、必要なものが日付ピッカーであり、時間について気にしない場合は、JQueryの日付ピッカーを試すことができます。 1つのdateFormatを表示し、altFormatをサーバーに送信することができます。

0

jqueryには、altFormatというフィールドがあります。データベース列にはタイムゾーン情報は含まれていませんが、タイムゾーンは暗黙的にUTCです。モデルメソッドを使用して、目的のフォーマットを取得できます。 DBを特定の形式で保存するのではなく、モデルメソッドを使用して特定の形式を解析できます。

def your_date 
    self[:column_name].strftime("%m-%D-%Y") 
end 

また、フォーマットに解析する前に、ユーザーの時間帯に応じて時間を変更する必要があります。

user_record = db_query.your_date 
current_user.zone.parse(user_record) 

参考になる場合があります。

http://brendankemp.com/essays/dealing-with-time-zones-using-rails-and-postgres/ https://apidock.com/ruby/DateTime/strftime

PS:あなたには、いくつかの他のより良い方法のプラザを見つけた場合は、ポストを行います。

関連する問題