gpt4 book ai didi

ruby-on-rails - 将 "1.hour"转换为 1.hour

转载 作者:数据小太阳 更新时间:2023-10-29 07:24:09 27 4
gpt4 key购买 nike

是否可以在 ruby​​ 中将“1.hour”字符串转换为 1.hour,将“2.hours”转换为 2.hours?实际上我是从表单的下拉列表中获取这个值的。我想通过这样的方式将它添加到 Time.now

time = Time.now + get_method(params[:hours_or_days])

其中 params[:days_or_hours] 可以是“2.hours”或“1.hour”或“1.day”。我想得到这些字符串的方法转换。是否可以? (通过某种方法,如发送)

最佳答案

您不应该使用 eval 执行此操作,因为使用您网站的人可能会发送任何 Ruby 代码字符串供您执行,这对您的网站来说是一个严重的安全漏洞。您可以使用正则表达式或白名单验证字符串,但这会很麻烦。

我认为您在呈现表单时应该评估 1.hour2.hours 等等。像这样:

<%= select_tag(:days_or_hours, options_for_select({ "1 hour" => 1.hour, "2 hours" => 2.hours })) %>

这会生成如下 HTML:

<select name="days_or_hours">
<option value="3600">1 hour</option>
<option value="7200">2 hours</option>
</select>

现在提交表单时会传递秒数,您不必担心用户选择的是小时还是天。您的代码简单地变成:

time = Time.now + params[:days_or_hours].to_i

关于ruby-on-rails - 将 "1.hour"转换为 1.hour,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5244315/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com