我在视图中有以下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(从零开始,后跟其他数字)数字进行比较?
谢谢,
丹尼
答案 0 :(得分:6)
从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 %>
(所以只需删除09前面的0)
答案 1 :(得分:1)
或者,只需与字符串进行比较
<% if @kase.jobno[1,2] == "09" then %>
<img src="../images/20109.jpg" alt="2009">