首页 > 解决方案 > 如何访问变量内的数据?错误:未定义的方法

问题描述

打印变量的内容会给我一堆数据。我想访问部分数据,但出现错误。

我正在使用 Viewpoint::EWS 并成功访问了我需要的数据。

calendaritems = folder.find_items({:folder_id => folder.folder_id, :calendar_view => {:start_date => sd.rfc3339(), :end_date => ed.rfc3339()}})
calendaritems.each do |event|
...
end

打印变量“event”,可以看到我需要的数据:“date_time_stamp”(或“appointment_reply_time”)。

#<Viewpoint::EWS::Types::CalendarItem:0x00005652b332dfa0
@ews_item=
:date_time_stamp=>{:text=>"2019-03-18T12:01:49Z"},
:appointment_reply_time=>{:text=>"2019-03-18T13:01:55+01:00"},

但是,尝试使用“event.date_time_stamp”(或“event.appointment_reply_time”)访问会导致错误

undefined method `date_time_stamp' for <Viewpoint::EWS::Types::CalendarItem:0x00005622f83c3d38> (NoMethodError)

这是代码:

calendaritems = folder.find_items({:folder_id => folder.folder_id, :calendar_view => {:start_date => sd.rfc3339(), :end_date => ed.rfc3339()}})
calendaritems.each do |event|
  if event.recurring?
      puts "#{event.date_time_stamp} | #{(event.start-event.date_time_stamp).to_i} | #{event.organizer.email_address}"
      if (event.start-event.date_time_stamp).to_i == reminderDays
           executeSomething()
      end
  end
end

我正在查看一周内资源的定期约会。由于这些将在一年后被默默地丢弃,因此计划建立一个系统来提醒人们这会发生,这样他们就可以重新预订资源。

起初我尝试使用约会的创建日期(event.date_time_created),它按预期工作,但后来注意到人们可以更新他们的约会,从而重置 1 年计时器。

这就是为什么我还需要上次更新的日期。

标签: rubyexchangewebservices

解决方案


您提供的调试输出表明该event变量有一个属性“ews_item”,然后它有一个带有属性“date_time_stamp”的哈希,所以试试event.ews_item[:date_time_stamp]


推荐阅读