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 не хранятся в БД, расписание будет.

Другие вопросы по тегам