将params [:date]转换为Date的禅方式?

时间:2012-04-13 06:35:19

标签: ruby-on-rails ruby

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

并在view的{​​{1}}内:

form_tag

1 个答案:

答案 0 :(得分:8)

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

@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