I have a date_select in my view inside a form, however on submit the value returned is in a hash form like so:
{"(1i)"=>"2010", "(2i)"=>"8", "(3i)"=>"16"}
how can i convert that in to a Date format in rails so i can use it as a condition when querying the database e.g :condition => {:dates == :some_date_from_date_select}
? i tried calling Date.parse(:some_date_from_date_select)
but it didn't work because its expecting a string and not a hash map.
is there a rails way to do this?
thanks
I don't know about a rails way, but this "one-liner" does the trick:
irb(main):036:0> d = Date.parse( {"(1i)"=>"2010", "(2i)"=>"8", "(3i)"=>"16"}.to_a.sort.collect{|c| c[1]}.join("-") )
=> #<Date: 4910849/2,0,2299161>
irb(main):037:0> d.to_s
=> "2010-08-16"
Or, with less magic:
h={"(1i)"=>"2010", "(2i)"=>"8", "(3i)"=>"16"}
d=Date.new(h['(1i)'].to_i, h['(2i)'].to_i, h['(3i)'].to_i)
d.to_s
=> "2010-08-16"
I have a short one line solution for this
params["due_date"] = {"date(3i)"=>"14", "date(2i)"=>"4", "date(1i)"=>"2014"}
params["due_date"].map{|k,v| v}.join("-").to_date
=> Mon, 14 Apr 2014
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With