Rails: Мой код вызывает "не могу преобразовать ноль в строку" - PullRequest
0 голосов
/ 02 ноября 2011

Этот код от моего разработчика ниже ... он ожидает что-то вроде "1 - январь" и пытается разобрать его во что-то другое?

Я изменил код в моей форме, так что теперь значение передаетсяк этому контроллеру просто "1" вместо "1 - январь"

Как я могу это исправить, чтобы я не получил ошибку "не могу преобразовать ноль в строку"?

  def get_expiry_month_number(monty_det, expiry_year)
    if MONTH_NAMES.include? monty_det
       month_number = MONTH_NAMES.index(monty_det)
       month_number = MONTH_NUMBERS[month_number]
       expiry_year = month_number.to_s + expiry_year[expiry_year.length-3..expiry_year.length-1]
       return expiry_year
    end
  end

Ответы [ 2 ]

0 голосов
/ 02 ноября 2011

Я думаю, что get_expiry_month_number('january', 2011) вернется: 1011.

В самом деле:

  • month_number должен вернуть 1 за январь

  • expiry_year[expiry_year.length-3..expiry_year.length-1] возвращает 3 последних символа 2011 => 011

0 голосов
/ 02 ноября 2011

В вашем примере вы столкнулись с проблемой, что одна из ваших строк в вашем расчете для года равна нулю.Скорее всего, это

expiry_year[expiry_year.length-3..expiry_year.length-1]

Вы можете попытаться исправить это, вызвав to_s для переменной виновника, таким образом, преобразовав ноль в '' и затем конкатенируйте.

Примерно так: expiry_year = month_number.to_s + expiry_year[expiry_year.length-3..expiry_year.length-1].to_s

Однако, это может иметь другие видимые последствия и не рекомендуется.Лучшим подходом было бы выяснить, почему то, что вы ожидаете от строки, оказывается пустой и, возможно, отображает соответствующую ошибку.

Не могли бы вы объяснить немного больше о том, что функция должна делать??А может быть значение expiry_year и monty_det при возникновении ошибки?puts заявления могут быть большой помощью здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...