2010-11-29 8 views
4

この無効な日付エラーの原因は何ですか?このコード行で

@note.date = Date.strptime(params[:custom_date], '%d-%m-%Y') unless params[:custom_date].blank? 

私はこのエラーを取得する:ここで

ArgumentError: invalid date 
/usr/ruby1.9.2/lib/ruby/1.9.1/date.rb:1022 

は、パラメータは以下のとおりです。

{ 
    "commit"    => "Create", 
    "utf8"    => "\342\234\223", 
    "authenticity_token" => "RKYZNmRaElg/hT5tlmLcqnstnOapdhiaWmDcjNDtSOI=", 
    "action"    => "create", 
    "note"    => { "name"=>"note1", "detail"=>"detail" }, 
    "controller"   => "notes", 
    "custom_date"  => "03-03-2010" 
} 

このエラーの原因は何?読んでくれてありがとう。

答えて

10

パラメータは、したがって、我々は

そのを明確にすることができます

{"commit"=>"Create", 
"utf8"=>"\342\234\223", 
"authenticity_token"=>"RKYZNmRaElg/hT5tlmLcqnstnOapdhiaWmDcjNDtSOI=", 
"action"=>"create", 
"note"=> 
    {"name"=>"note1", 
    "detail"=>"detail"}, 
"controller"=>"notes", 
"custom_date"=>"03-03-2010"} 

ですparams[:custom_date]ではなく、です

UPDATE

Date.strptime方法は、特定のpattern.Forインスタンスを次の

str = "01-12-2010" #DD-MM-YYYY 
then use 
Date.strptime(str,"%d-%m-%Y") 

しかし

str = "2010-12-01" #YYYY-MM-DD 
then use 
Date.strptime(str,"%Y-%m-%d") 
1

フォーマットのparamsに使用to_date方法[:CUSTOM_DATE]

@note.date = (Date.strptime(params[:custom_date], '%d-%m-%Y')).to_date unless params[:custom_date].blank? 

あなたが取得しているおかげで

+1

to_date'が冗長である '追加それはparamsは、それらを読み取ることが可能ですので

Railsはparamsはキーを象徴します。 'Date.strptime(...)'は既にDateオブジェクトを返します。 –

0

場合、私はルビーでこのエラーを再現することはできませんよ1.9.2またはルビー1.8.7

あなたのparam [:custom_date]が、表示されたログ出力とDate.strptime呼び出しの間で変更されていると思われます。 【:CUSTOM_DATE]

関連する問題