Rails, если утверждение приводит к неправильной восьмеричной ошибке? - PullRequest
1 голос
/ 05 сентября 2010

У меня есть следующее выражение if на мой взгляд:

<% if @kase.jobno[1,2].to_i == 10 then %>
  <img src="../images/2010.jpg" alt="2010">
<% elsif @kase.jobno[1,2].to_i == 11 then %>
  <img src="../images/2011.jpg" alt="2011">
<% else %>
  <img src="../images/document.jpg" alt="Document" />
<% end %>

Однако оно работает абсолютно идеально, если я хочу расширить диапазон оператора, чтобы показать конкретное изображение, если @ kase.jobnoполе содержит номер 08 и изменить оператор на следующее:

<% if @kase.jobno[1,2].to_i == 09 then %>
  <img src="../images/20109.jpg" alt="2009">
<% elsif @kase.jobno[1,2].to_i == 10 then %>
  <img src="../images/2010.jpg" alt="2010">
<% elsif @kase.jobno[1,2].to_i == 11 then %>
  <img src="../images/2011.jpg" alt="2011">
<% else %>
  <img src="../images/document.jpg" alt="Document" />
<% end %>

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

Illegal octal digit

, которая указывает на значение 09.

Разве невозможно иметь оператор if, который сравнивается с числом 0X (число начинается с нуля и сопровождается другой цифрой)?

Спасибо,

Дэнни

Ответы [ 2 ]

6 голосов
/ 05 сентября 2010

Начало числа с 0 говорит Ruby, что это восьмеричное число.09 является недопустимым восьмеричным числом, так как эти числа считаются от 0 до 7 (а не до 9).Таким образом, после 07 следует 010, то есть 8 в десятичной системе, а затем 011, который является десятичным 9.

Если вы хотите проверить, является ли год 2009, вы можете использовать эту проверку:

<% if @kase.jobno[1,2].to_i == 9 then %>
  <img src="../images/2009.jpg" alt="2009">
<% end %>

(поэтому просто удалите 0 перед 09)

1 голос
/ 05 сентября 2010

Либо просто сравните со строкой

<% if @kase.jobno[1,2] == "09" then %>
  <img src="../images/20109.jpg" alt="2009">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...