1

我目前正在使用 Ruby 1.8.7(托管服务提供商要求...很快就会离开)。

除此之外,我收到以下错误,

NoMethodError (private method `gsub!' called for Thu Oct 10 11:56:28 UTC 2013:Time):
  app/models/time_tracked.rb:140:in `search'
  app/models/time_tracked.rb:140:in `sort!'
  app/models/time_tracked.rb:140:in `search'

有问题的行(140)是:

sub.sort! { |x, y| Time.zone.parse(x[1]) <=> Time.zone.parse(y[1]) } if sub.length > 1

据我了解,抛出错误是因为我试图解析时间对象而不是字符串,但我不清楚如何纠正这个问题。

非常感谢任何帮助。谢谢!

更新:Cortex的回答解决了最初的问题,但现在实施它会导致我认为以下问题,

ActionView::Template::Error (private method `sub!' called for Thu Oct 10 11:56:28 UTC 2013:Time):
    23:<td><strong><%= (v.index(item) == 0) ? k : '' %></strong></td>
    24:<td><%= item[0] %></td>
    25:<td>
    26:<%= DateTime.strptime(item[1], '%Y-%m-%d %H:%M ').in_time_zon e(Time.zone).strftime("%m/%d/%Y %I:%M %p")%>
    27:</td>
    28:<td>
    29:<%= DateTime.strptime(item[2], '%Y-%m-%d %H:%M:%S').in_time_z
one(Time.zone).strftime("%m/%d/%Y %I:%M %p")%>

有什么建议么?谢谢!

4

1 回答 1

1

看起来像是x[1]一个Time对象。所以试试:

sub.sort! { |x, y| Time.zone.parse(x[1].to_s) <=> Time.zone.parse(y[1].ti_s) } if sub.length > 1

我在 Ruby 2 上对此进行了测试。希望它适用于 Ruby 1.8.7。

于 2013-10-16T22:11:43.710 回答