2010-09-05 36 views
1

我有以下的,如果在我看來聲明:Rails 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 

這點s到09的價值。

是否不可能有一個if語句與0X(從0開始,然後是其他數字)的數字進行比較?

感謝,

丹尼

+0

你爲什麼要對一個'0x'數量擺在首位比較比較?這不應該是一個字符串比較嗎? – 2010-09-05 09:13:53

+0

0X他的意思是一個八進制數,起初我把它誤解爲十六進制 – Veger 2010-09-05 09:18:20

+0

嗨Pekka,說實話我沒有足夠的理解來回答這個問題。我們的工作號碼是M09-123,其中M始終存在,09是當年,123是唯一(當年)標識符。所以我想比較一下年份。 – dannymcc 2010-09-05 09:19:32

回答

6

啓動數0告訴紅寶石,這是一個八進制數。 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 %> 

(所以只是在09前面)

+0

非常好,謝謝! – dannymcc 2010-09-05 09:15:00

1

刪除0或者,只需要對字符串

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