我正在尝试将通过查询字符串传递的字符串转换为整数,以便对其执行乘法并将其传递给expired_date
以更改日期和时间。
ed = params.fetch 'expired_date'
ex = ed.to_i
expired_date = (Time.now + ex * 24 * 60 )
在我的浏览器中,我输入了:
/expired_date="2"
进行检查时:
ed show "2"
ed.instance_of? String show "true"
ex show 0
expired_date show [the current date and time]
我想要结果:
ed show "2"
ex show 2
expired_date show [current date + 2 days]
我不明白为什么它不能转换为整数。
答案 0 :(得分:2)
在您的示例中,ed
不是字符串2
,而是字符串"2"
。如果您尝试在控制台中的to_i
上致电"2"
,您会看到为什么会收到0
:
ed = '"2"'
#=> "\"2\""
ed.to_i
#=> 0
在调用to_i
之前,您需要从字符串中删除双引号。一种方法是使用以下方法删除第一个和最后一个字符:
ex = ed[1...-1].to_i
#=> 2
另一种方法是使用gsub
:
ex = ed.gsub('"', '').to_i
#=> 2
但是你应该考虑传递没有引号的参数,如果它打算在你的应用程序中用作整数。