我使用recursing_select和ice_cube让用户定义重复事件。我将序列化的IceCube时间表存储在字符串Attribute中。
事件模型包括以下代码:
include IceCube
serialize :schedule, IceCube::Schedule
控制器正在清除输入:
params[:event][:schedule] = JSON.parse(params[:event][:schedule], quirks_mode: true)
视图如下:
= simple_form_for [:admin, @event] do |f|
= f.input :schedule do
= f.select_recurring :schedule
这是参数在对每天重复发生的事件进行消毒后的样子:
{"schedule"=>{"interval"=>1, "until"=>nil, "count"=>nil, "validations"=>nil, "rule_type"=>"IceCube::DailyRule"}}
但是,在使用event.new将其分配给新事件后,检查时间表如下所示:
#<IceCube::Schedule:0x007f762831e958 @start_time=2015-12-17 12:02:29 +0100, @all_recurrence_rules=[], @all_exception_rules=[]>
重复出现的规则似乎已消失,表单字段仅显示日期和时间。
我也遇到了同样的问题。recurring_select仅编辑规则。以下为我解决了问题:
schedule = IceCube::Schedule.new (start_time = params['schedule_starttime'])
schedule.add_recurrence_rule( RecurringSelect.dirty_hash_to_rule(params['schedule_rule']) )
schedule_starttime和schedule_rule没有存储在数据库中,schedule会存储。