字符串中的两个变量

时间:2013-08-28 14:38:18

标签: ruby-on-rails ruby ruby-on-rails-3

我尝试将两个变量添加到字符串中:

if code.alter_fehler == 'k' && code.alter_o.to_f <= 124
    @arr << "Bitte Kodierung überprüfen: Kode gilt überwiegend nur für Patienten in der
             Altersgruppe zwischen #{jahrtag(code.alter_u,'')} 
             und {jahrtag('',code.alter_o)}."
end

如何在应用程序控制器中看到我在字符串中调用两次def jahrtag:

 def jahrtag(zahlu,zahlo)
if (zahlu && zahlo) == '0' then return 'O Tagen' end
if zahlu == '1' then return '1 Jahr' end
if zahlu == '8' then return '8' end
if zahlu == '12' then return '12' end
if zahlu == '15' then return '15 Jahren' end
if zahlu == '18' then return '18 Jahre' end
if zahlu == '30' then return '30 Jahren' end
 end

但不知何故,而不是获取正确的变量'例如:1 Jahr',我的变量在视图中打印为空白!有人知道我弄错了什么吗?感谢

2 个答案:

答案 0 :(得分:4)

und {jahrtag('',code.alter_o)}.这里缺少#

应为und #{jahrtag('',code.alter_o)}.

答案 1 :(得分:0)

发生的事情是 if 语句都不匹配。当方法的执行进入方法的末尾时,该方法返回最后执行的表达式的值。执行的最后一个表达式是“if”,其中条件是 falsy ; if 没有 else 且错误条件 nil 的结果。

当ruby使用#{...}语法将表达式插入到字符串中时,表达式上会调用#to_snil.to_s的结果是一个空字符串。

要解决此问题,请将此添加为#jahrtag的最后一行:

"#{zahlu} Jahren"

这样,即使没有 if 语句匹配,该函数也将始终返回非空字符串。