2009-04-09 48 views
3

我正在使用一个rails helper来创建3个选择列表,以便让用户选择一个日期。如果我给助手一个名字,它会将所有3个选择列表设置为这个名字,然后只有最后一个通过(它覆盖了前一个)。我需要知道的是:采用一组3个选择列表(日,月,年)的最佳方式是什么,并将它们组合起来创建一个日期对象并将其保存到我的数据库中?如何在轨道窗体中处理红宝石中的日期对象?

这里是我的日期字段:

<%= select_date Date.today, { :order => [:month, :day, :year], :start_year => Date.today.year, :end_year => Date.today.year + 3 } %> 

和这里的参数传递给我的控制器

Parameters: {"date"=>{"month"=>"4", "day"=>"9", "year"=>"2009"}, 
"action"=>"create", "controller"=>"shows", 
"show"=>{"headline"=>"for example, \"Parking lot is next to the bookstore on Main Street\"", "venue_id"=>{"venue_id"=>""}, "cents"=>"00", "dollars"=>"00"}, 
"user_id"=>"3", "load_in"=>"-2", "show_time"=>"-2", "query"=>"Type venue name & location here...", "doors"=>"-2"} 

(从我的开发日志吐出来)正如你所看到的,日期已过。理想情况下,我希望将日期作为可接受的日期对象传递给我的控制器。此外,我希望它在“show”散列中传递,因为它是显示数据。这是可能的一些简单的轨道修改?或者我必须写一些JS(在我看来,这个解决方案有点脏)?

回答

6

我想你想date_select代替select_date,因为你希望它在你的节目对象中的特定字段关联。

date_select("show", "date", :default => Date.today, 
    :order => [:month, :day, :year], :start_year => Date.today.year, 
    :end_year => Date.today.year + 3)