gpt4 book ai didi

ruby-on-rails - 数组到字符串回到数组的转换问题

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

我正在像这样将一堆 ID 保存到 session 中。

session[:id_group] = 1,2,3,4,5

因为我需要用表格将它们保存到数据库中。

在那个表单中我有隐藏字段:

<%= form.text_field :group, :value => session[:id_group].inspect%>

我使用检查以便保存到数据库中的值变为 [1,2,3,4,5] 而不是 12345

问题是,当我从数据库中获取该值时,我得到的是字符串形式的 [1,2,3,4,5]。如果我这样做:

groups = game.group
=> [1,2,3,4,5]
group.class
=>string

我可以将它转换成这样的数组:

groups = game.group.split(',')

但如果我这样做


groups.each |group| do
puts |group|.to_s
end

我明白了


[1
2
3
4
5]

我需要干净的 ID,这样我才能做类似的事情


but then if I do
groups.each |id| do
User.find_by_id(id)
end

我该如何解决这个问题?提前致谢。

最佳答案

您不应该使用 inspect 对您的值进行编码。这将被重新编码为文字字符串,这可能不是您的意图。

将内容放入表单的正确方法是执行与解码方式相反的操作:

<%= form.text_field :group, :value => session[:id_group].join(',') %>

只要 join 和 split 匹配得当,它就可以工作。 inspect 的对应项是 eval,您真的不想这样做,因为有人可以那样运行任意代码。

请注意,您还可以使用类似以下内容的单个查询来加载一组用户:

@ids = params[:group].split(/,/)

@users = User.find_all_by_id(@ids)

这比一次加载它们要高效得多。

关于ruby-on-rails - 数组到字符串回到数组的转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2255366/

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