0

Ich bin in der Lage, .ics Dateianhang von Mail zu senden und kann ein Ereignis von Mail erstellen, aber ich möchte ein Ereignis direkt auf Klick link_to erstellen und es sollte wie authentifizieren fragen google, Outlook, etc ... und von dort sollte es ein Ereignis zu Kalender erstellen, die der Benutzer ausgewählt wurde. Hier ist mein CodeOpen .ics Dateiereignis direkt ohne Mailanhang

Im Modell

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 

und in meinem Controller

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 

hier die Show-Methode ist meiner Ansicht Datei

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

i iCalender gem bin mit der ist sehr beliebt für die Erstellung von Veranstaltungen

Antwort

0

können Sie google-api-client und Edelsteine ​​verwenden, um diese Funktionalität zu erreichen. während mit Google zum ersten Mal authentifizieren, erinnere mich an die refresh_token aktualisieren, um die access_token später, wenn die access_token auslaufen zu speichern. Nach der Authentifizierung mit Google können Sie ein Ereignis direkt zum Kalender hinzufügen.

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