date_select传递日期,以便ruby可以读取它

时间:2016-09-14 12:42:48

标签: ruby forms datetime

我有这个date_select:

date_select("start_date_variable", 
            "start_date_attribute", 
            :start_year => 2014, 
            :end_year => 2016, 
            :order => [:day, :month, :year], 
            :use_short_month => true, 
            :add_month_numbers => true)

以params格式返回日期:

"start_date_variable" => {
                          "start_date_attribute(3i)"=>"14",
                          "start_date_attribute(2i)"=>"8", 
                          "start_date_attribute(1i)"=>"2016"
                         }

我可以从中获得日期,月份和年份,但我想用以下内容搜索数据库:

@orders_from = @fulfillable_orders.where('created_at >= :start_date_par,
                                         :start_date_par => params[:start_date_variable])

但是我不知道如何以ruby识别,阅读和返回记录的格式传递日期。

有任何线索可以解决这个问题的方法吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

date_hash = {
  "start_date_attribute(3i)"=>"14", 
  "start_date_attribute(2i)"=>"8", 
  "start_date_attribute(1i)"=>"2016"
}

# will be: '2016-8-14'
date_string = date_hash.values.join('-').reverse

Date.parse(date_string)

修改

为了更严格地验证日期格式,您可以使用Date#strptime:

Date.strptime(date_string', '%Y-%m-%d')

答案 1 :(得分:1)

你可以尝试这个宝石multiparameter_attributes_handler