我正在使用rmeetup gem从meetup组中获取信息。 当我尝试从结果中提取信息时,除了时间之外所有工作都会收到“无法将Fixnum转换为字符串”
我的代码:
<% RMeetup::Client.api_key = "APICODE"
results = RMeetup::Client.fetch(:open_events, { topic: "business", city: "syracuse", state: "ny"}) %>
<%= results.count %><br/>
<%= results.each do |result| %>
<%= result.name %>
<%= result.id %>
<%= result.waitlist_count %>
<%= result.utc_offset %>
<%= result.created %>
<%= result.time.to_s %>
<hr/
<% end %>
奇怪的是.id,.waitlist_count,.utf_offset,.created所有工作都是数字,但.time不会工作,也不允许我转换为字符串。
答案 0 :(得分:1)
几乎所有对象,一直到Object
,都包含一个to_s
方法。
Object.new.to_s #=> "#<Object:0x1668fa8>"
这意味着您的问题不在to_s
调用的<%= ... %>
方法中。
查看rmeetup gem中的event.rb
文件,您会注意到:
self.time = DateTime.parse(event['time'])
这意味着您使用result.time
调用的实例变量属于DateTime
类型。另请注意,使用带有字符串的DateTime.parse
进行设置。那么当你将Fixnum传递给DateTime.parse
时会发生什么?
DateTime.parse(42) #=> 'no implicit conversation of Fixnum into String'
根据MeetUp API,time
将返回为:
事件的UTC开始时间,自纪元以来的毫秒数
最初的RMeetup gem最近更新于5年前。你在使用更新的叉子吗?如果没有,可能是因为MeetUp发布了新的API,所以gem已经破坏了。我建议要么找到一个更新的宝石来访问MeetUp API,要么分叉宝石并进行自己的改动。