0

メールから.icsファイルの添付ファイルを送信できます。メールからイベントを作成することはできますが、link_toをクリックすると直接イベントを作成することができます。グーグル、アウトルックなど...そこからそれはユーザーが選択されたカレンダーにイベントを作成する必要があります。ここ は私のコードはここで私はどのicalenderの宝石を使用しています私のビューファイルメールの添付なしで直接.icsファイルのイベントを開く

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

あるモデル

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 

と私のコントローラ内で

showメソッド

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 

ですイベントの作成に非常に人気があります

答えて

0

あなたは、この機能を実現するためにgoogle-api-clientomniauth-google-oauth2宝石を使用することができます。最初にGoogleで認証している間にrefresh_tokenを保存して、access_tokenが期限切れになったときに、access_tokenを更新してください。 Googleで認証した後、カレンダーに直接イベントを追加できます。

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 
関連する問題