2012-04-13 10 views
4

params[:date]フィールドをDateオブジェクトに変換する最もエレガントな方法は何ですか?params [:date]をDateに変換する禅の方法は?

"date"=>{"day"=>"13", "year"=>"2012", "month"=>"4"} 

現在、私はcontrollerに次のコードを持っている:

@date = Date.current 
if params[:date] 
    yy = mm = dd = 0 
    yy = params[:date][:year].to_i if params[:date][:year] 
    mm = params[:date][:month].to_i if params[:date][:month] 
    dd = params[:date][:day].to_i if params[:date][:day] 
    @date = Date::civil(yy, mm, dd) if Date::valid_date?(yy, mm, dd) 
end 

viewform_tag内側:

<%= select_date(@date, :order => [:year, :month, :day], :prefix => 'date') %> 
+0

を私は短い行で解析した文字列と、デリゲートを送信することを好むだろう、私はそれが可能にすることができたとしますが、方法がわかりません。 – juanpastas

答えて

7

それは有効な日付や時刻オブジェクトを返します。試してみてください:

@date = Date.parse("#{params[:date]['day']}-#{params[:date]['month']}-#{params[:date]['year']}") if params[:date] 
OR 
@date = Time.parse("#{params[:date]['day']}-#{params[:date]['month']}-#{params[:date]['year']}") if params[:date] 

@date ||= Date.current 
関連する問題