dan*_*mcc 1 ruby ruby-on-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 %>
Run Code Online (Sandbox Code Playgroud)
但是,如果我想扩展语句的范围以显示特定图像,如果@ 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 %>
Run Code Online (Sandbox Code Playgroud)
然后我收到以下错误:
Illegal octal digit
Run Code Online (Sandbox Code Playgroud)
这指向了09的价值.
是否不可能有一个if语句与0X(从零开始,后跟其他数字)数字进行比较?
谢谢,
丹尼
从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 %>
Run Code Online (Sandbox Code Playgroud)
(所以只需删除09前面的0)