динамическое создание файла ical / ics из модели rails
Учитывая, что у меня есть вся необходимая информация, хранящаяся в модели событий :в приложении rails. Как добавить кнопку в представление, которая при нажатии доставляет динамически созданный файл ical / ics?
Я смотрел вокруг в течение нескольких дней, и вся информация, которую я нахожу, кажется устаревшей или предполагает, что я уже знаю, как сделать большие куски решения.
1 ответ:
Драгоценный камень icalendar работает хорошо. https://github.com/icalendar/icalendar
Я использую это для создания версий outlook и ical. Отлично работает.
cal = Icalendar::Calendar.new filename = "Foo at #{foo.name}" if params[:format] == 'vcs' cal.prodid = '-//Microsoft Corporation//Outlook MIMEDIR//EN' cal.version = '1.0' filename += '.vcs' else # ical cal.prodid = '-//Acme Widgets, Inc.//NONSGML ExportToCalendar//EN' cal.version = '2.0' filename += '.ics' end cal.event do |e| e.dtstart = Icalendar::Values::DateTime.new(foo.start_at, tzid: foo.time_zone) e.dtend = Icalendar::Values::DateTime.new(foo.end_at, tzid: foo.course.time_zone) e.summary = foo.summary e.description = foo.description e.url = event_url(foo) e.location = foo.formatted_address end send_data cal.to_ical, type: 'text/calendar', disposition: 'attachment', filename: filename