如何将rails中date_select返回的哈希值转换为Date对象?

Mo.*_*Mo. 8 ruby-on-rails

我在视图中的一个表单中有一个date_select,但是在提交时返回的值是一个哈希表,如下所示:

{"(1i)"=>"2010", "(2i)"=>"8", "(3i)"=>"16"}
Run Code Online (Sandbox Code Playgroud)

我如何将其转换为rails中的日期格式,以便我可以在查询数据库时将其用作条件,例如:condition => {:dates == :some_date_from_date_select}?我尝试调用Date.parse(:some_date_from_date_select)但它没有工作,因为它期望一个字符串而不是哈希映射.

有没有铁路方式来做到这一点?

谢谢

ngo*_*eff 9

我不知道有关导轨方式,但这种"单线程"可以解决问题:

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"
Run Code Online (Sandbox Code Playgroud)

或者,减少魔力:

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"
Run Code Online (Sandbox Code Playgroud)