Ошибка получения частного метода в Ruby on Rails - PullRequest
6 голосов
/ 05 февраля 2010

У меня есть контроллер:

class StatsController < ApplicationController

  require 'time'

  def index
      @started = "Thu Feb 04 16:12:09 UTC 2010"
      @finished = "Thu Feb 04 16:13:44 UTC 2010"
      @duration_time = stats_duration(@started, @finished)
  end

  private
  def stats_duration(started, finished)
    time_taken = distance_of_time_in_words(Time.parse(started), Time.parse(finished))
    time_taken
  end

end

Требуется время start и end и вычисляется длительность между временами.

Когда я запускаю это, я получаю следующую ошибку:

приватный метод `gsub! ' призвал к чт 04 февраля 16:12:09 UTC 2010: время

Почему это происходит?

1 Ответ

12 голосов
/ 05 февраля 2010

приватный метод gsub! "" при использовании Time.parse обычно означает, что вы вызвали parse с Time объектом, а не String, поэтому кажется, что ваш код фактически пытается проанализировать время дважды.

, например

>> t = Time.now
=> Fri Feb 05 13:12:17 +0000 2010
>> Time.parse(t)
NoMethodError: private method `gsub!' called for Fri Feb 05 13:12:17 +0000 2010:Time
        from c:/ruby/lib/ruby/1.8/date/format.rb:965:in `_parse'
        from c:/ruby/lib/ruby/1.8/time.rb:240:in `parse'
        from (irb):6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...