2010-09-05 5 views
1

je suit si la déclaration à mon avis:Rails si l'instruction entraîne une erreur de nombre octal illégal?

<% 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 %> 

Il fonctionne parfaitement tout à fait, cependant, si je veux étendre la portée de la déclaration pour afficher une image particulière si le champ @ kase.jobno comprend de la numéro 08 et le changement de la déclaration à ce qui suit:

<% 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 %> 

puis-je obtenir l'erreur suivante:

Illegal octal digit 

quel point s à la valeur 09.

Est-il impossible d'avoir une instruction if qui compare avec un nombre 0X (nombre commençant par zéro et suivi d'un autre chiffre)?

Merci,

Danny

+0

Pourquoi avez-vous besoin de comparer contre un nombre '0x' en premier lieu? Cela ne devrait-il pas être une comparaison de chaînes? –

+0

Avec 0X, il voulait dire un nombre octal, au début je l'ai mal interprété comme hexadécimal ainsi – Veger

+0

Salut Pekka, pour être honnête, je ne comprends pas assez pour répondre à la question. Nous avons des numéros d'emplois qui sont M09-123, où M est toujours présent, 09 est l'année en cours et 123 est l'identificateur unique (pour l'année). Donc, je voulais comparer la partie de l'année. – dannymcc

Répondre

6

À partir d'un numéro 0 indique Ruby est un nombre octal. 09 est un nombre octal illégal puisque ces nombres comptent de 0 à 7 (et non à 9). Ainsi, après 07 010 qui vient est de 8 dans le système décimal, suivi par 011 qui est décimal 9.

Si vous voulez vérifier si l'année est 2009, vous pouvez utiliser cette vérification:

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

(si Il suffit de retirer le 0 devant 09)

+0

Excellent, merci! – dannymcc

1

Sinon, faites la comparaison avec la chaîne

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