我的开发人员在下面的代码...它是否期望像“1 - 1月”之类的东西,并尝试将其解析为其他内容?
我更改了表单上的代码,所以现在传递给此控制器的值只是“1”而不是“1 - 1月”
如何解决此问题,以便我无法将“无法将nil转换为字符串”错误?
def get_expiry_month_number(monty_det, expiry_year)
if MONTH_NAMES.include? monty_det
month_number = MONTH_NAMES.index(monty_det)
month_number = MONTH_NUMBERS[month_number]
expiry_year = month_number.to_s + expiry_year[expiry_year.length-3..expiry_year.length-1]
return expiry_year
end
end
答案 0 :(得分:0)
在您的示例中,您遇到的问题是,您年度计算中的一个字符串为零。很可能就是这个,
expiry_year[expiry_year.length-3..expiry_year.length-1]
您可以通过在culprit变量上调用to_s
来尝试解决此问题,从而将nil转换为''
然后连接。
像这样:expiry_year = month_number.to_s + expiry_year[expiry_year.length-3..expiry_year.length-1].to_s
但是,这可能会产生其他后果,因此不建议这样做。更好的方法是找出为什么你期望的字符串变成空的,并且可能显示适当的错误。
你能解释一下这个函数应该做些什么吗?可能是错误发生时expiry_year
和monty_det
的值? puts
语句在这里可以提供很大的帮助。
答案 1 :(得分:0)
我想get_expiry_month_number('january', 2011)
会返回:1011
。
事实上:
month_number
应该返回1月1日
expiry_year[expiry_year.length-3..expiry_year.length-1]
返回2011
=>的最后3个字符011