直接打开.ics文件事件没有邮件附件

问题描述:

我能够从邮件发送.ics文件附件,并且能够从邮件创建一个事件,但我想直接点击link_to创建一个事件,它应该要求进行身份验证谷歌,前景等...从那里它应该创建一个事件日历,用户被选中。 这里是我的代码直接打开.ics文件事件没有邮件附件

在模型

def to_ics(e) 

event = Icalendar::Event.new 

event.dtstart = Icalendar::Values::DateTime.new(e.start_time, tzid: e.start_time_zone) 
event.dtend = Icalendar::Values::DateTime.new(e.end_time, tzid: e.start_time_zone) 
event.description = e.description 
event.created = self.created_at 
event.last_modified = self.updated_at 
event.summary = e.event_name 
event.url = e.registration_link 
event.location = e.city + "," + e.state 
event.uid = event.url = "#{self.id}" 
event 
end 

,并在我的控制器的显示方法

def show 
@event = AssocEvent.find(params[:id]) 

    calendar = Icalendar::Calendar.new 
    calendar.add_event(@event.to_ics(@event)) 
    calendar.publish 
ics_file = File.open('../Descargas/basic.ics') 
    render :text => calendar.to_ical 
end 

这里是我的看法文件

 <%= link_to "ADD TO MY CALENDAR", event_path(:id => e.id), class: "calender_events" %> 

我使用iCalender事件的宝石,其非常受欢迎创建活动

你可以使用google-api-clientomniauth-google-oauth2宝石来实现这个功能。 首次使用Google进行身份验证时,请记得在access_token过期时,保存refresh_token刷新access_token。 用谷歌认证后,你可以直接添加一个事件到日历。

def add_to_google_calendar 
    if user.access_token.present? && user.refresh_token.present? && user.gmail.present?) 
    user.refresh_access_token 

    client = Google::APIClient.new 
    client.authorization.access_token = user.access_token 
    service = client.discovered_api('calendar', 'v3') 

    event = { 
     'id' => self.created_on.to_i, 
     'summary' => "summary", 
     'location' => "location", 
     'start' => { 
      'dateTime' => "startdate", 
     'end' => { 
      'dateTime' => "enddate" 
     } 
    } 

    results = client.execute!(
     :api_method => service.events.insert, 
     :parameters => { 
      :calendarId => 'primary'}, 
     :body_object => event) 
    end 
rescue 
// error handling 
end 
end