0

ユーザーが定期的なイベントを定義できるように、recurring_select と ice_cube を使用しています。シリアル化された IceCube-Schedule を string-Attribute に格納しています。

event-Model には次のコードが含まれます。

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=[]>

定期的なルールはなくなったようで、フォーム フィールドには日付と時刻のみが表示されます。

4

1 に答える 1

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 はデータベースに保存されません。スケジュールは保存されます。

于 2016-01-05T17:02:52.177 に答える