我有一个类型为datetime的列start
,并希望将其显示为文本字段(添加日期选择器)和time_select。我尝试了不同的方法,其中一个是使用fields_for / simple_fields_for。
<%= f.simple_fields_for :start do |start| %>
<%= start.input :date, :as => :string, :input_html => { :class => 'datepicker'} %>
<%= start.input :time, :as => :time, :minute_step => 5, :input_html => { :class => 'input-small'} %>
<% end %>
如何将这两个字段转换为模型中所需的日期时间列? 或者有更好的方法在匹配数据库中一个字段的表单中显示两个字段吗?
答案 0 :(得分:4)
您必须解析控制器中的单独参数并将它们组合起来制作日期时间。
我建议制作一个名为StartTime的模型来解析它
...应用程序/模型/ start_time.rb
class StartTime
extend ActiveModel::Naming
attr_accessor :date, :time
def initialize(date, time)
@date = date.is_a?(String) ? Date.parse(date) : date
@time = time
end
def to_timestamp
# parse @date and @time into Datetime
end
Chronic是从字符串中解析日期/时间的有用宝石
希望这有帮助
答案 1 :(得分:0)
您可以简单地使用Jquery timepicker
,而不是将两个字段组合成日期时间