2016-04-09 8 views
0

フォーム送信後に日と月のミックスがマッチングし、具体的には、として私simple_formにdate_pickerを使用している:Railsの4 - 日は、私は<code>gem 'datetimepicker-rails'</code>を使用してい

<%= f.input :tripDate, :as => :date_picker, label: 'Pick-up Date', placeholder: 'Click icon on right', input_html: {data: {date_options: {showClose: true}}} %> 

このフィールドの入力ボックスが正しいを示し私が望む形式で日付の出力が、保存されているデータベースの日付は、月と日が変更されて保存されています。後にDBに2016年4月9日

実際入力:DBへの入力を期待

en: 
    datepicker: 
    dformat: '%m/%d/%Y'    # display format of the date (this is the default, can be ommited) 
    pformat: 'MM/DD/YYYY'    # picking format of the date (this is the default, can be ommited) 
    timepicker: 
    dformat: '%R'      # display format of the time (this is the default, can be ommited) 
    pformat: 'hh:mm A'    # picking format of the time (this is the default, can be ommited) 
    dayViewHeaderFormat: 'MMMM YYYY' # picking format of the time (this is the default, can be ommited) 

ドキュメントはので、私はこの形式に変更config/locales/en.ymlを変え指摘しますロケール/ en.ymlの変更点:2016/09/04

これは、フォーマットを変更すると何とか日と月が変わることを私に示しています。 DBに取り組んだのパラメータは次のとおりです。["tripDate", "2016-09-04"]

しかし、レールはメッセージをログに記録することは私に正しい日付の出力を与える:Started POST "/reservations" for ::1 at 2016-04-09 09:00:21 -0400

は、これはおそらく宝石と間違って何かだと信じて私をリードしています。

保存する前にtripDate属性を変更していません。誰かが何が起こっているのか、解決策は何かを説明することはできますか?

+0

作成されたレコードをどうやって調べていますか?データベースのデータは正しいのですか、それともそれを表示するだけですか? –

+0

@FrederickCheung私はいくつかの方法を試しました。私のローカルマシンのターミナルのログを見て、それから私はレールのコンソールを走らせて、それを印刷して、私のアプリケーションで検索したデータを見ました。 – ayounis90

+0

入力のフォーマットに関係なく、dbに格納されているデータの形式は同じです。レールコンソールで日付が正しい値であることを確認します(必要に応じてstrftimeを使用してください)。その結果が正しく表示されてもビューが表示されない場合は、ビューがデータをどのようにフォーマットするかに問題があります.dbのデータが正しくなければ、問題は入力になります。それがどれであるかを把握し、それに応じてあなたの質問を更新してください(おそらく両方の場合があります)。 –

答えて

0

私のジレンマの解決策は、this SO postに従うことで解決されました。より具体的には、これらの行に沿って何かをすると言われた問題に与えられた最後の解決策:

def create 
..... 
@person.dob = DateTime.strptime(params[:person][:dob], '%m/%d/%Y').to_date 
..... 
@person.save 
..... 
end 
関連する問題