将params 转换为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

  [:year, :month, :day], :prefix => 'date') %> 

它将返回有效的日期或时间对象。 试试:

 @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