将通过HTTP GET传递的字符串转换为整数

时间:2015-05-07 02:41:14

标签: ruby

我正在尝试将通过查询字符串传递的字符串转换为整数,以便对其执行乘法并将其传递给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]

我不明白为什么它不能转换为整数。

1 个答案:

答案 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

但是你应该考虑传递没有引号的参数,如果它打算在你的应用程序中用作整数。