rails 4.2.5 simple_form, ice_cube и recurring_select
Я использую recurring_select и ice_cube, чтобы позволить пользователю определять повторяющиеся события. Я храню сериализованное расписание IceCube в строковом атрибуте.
Модель события включает в себя этот код:
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=[]>
Кажется, что повторяющиеся правила исчезли, а в поле формы отображаются только дата и время.
1 ответ
У меня такая же проблема. 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 не хранятся в БД, расписание будет.