我在表单中的 View 中有一个 date_select,但是在提交时,返回的值采用散列形式,如下所示:
{"(1i)"=>"2010", "(2i)"=>"8", "(3i)"=>"16"}
我如何将其转换为 Rails 中的日期格式,以便在查询数据库时将其用作条件,例如
:condition => {:dates == :some_date_from_date_select}
?我试着打电话 Date.parse(:some_date_from_date_select)
但它不起作用,因为它需要一个字符串而不是哈希映射。有没有办法做到这一点?
谢谢
最佳答案
我不知道 Rails 的方式,但是这个“单线”可以解决问题:
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"
或者,用更少的魔法:
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"
关于ruby-on-rails - 如何将从 rails 中的 date_select 返回的哈希值转换为 Date 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3501180/