无法从Fixnum转换为String

时间:2013-06-14 16:08:50

标签: ruby-on-rails ruby ruby-on-rails-3 gem

我正在使用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不会工作,也不允许我转换为字符串。

1 个答案:

答案 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 APItime将返回为:

  

事件的UTC开始时间,自纪元以来的毫秒数

最初的RMeetup gem最近更新于5年前。你在使用更新的叉子吗?如果没有,可能是因为MeetUp发布了新的API,所以gem已经破坏了。我建议要么找到一个更新的宝石来访问MeetUp API,要么分叉宝石并进行自己的改动。