我已经构建了一个表单标记,并从用户中选择了值。这就是我得到的:

params[:user_answer_ids] = {"170"=>["599"], "162"=>["561", "563", "565"], "160"=>["549", "550"]}

现在我想把这个散列中的所有字符串转换成int,比如:
params[:user_answer_ids] = {170=>[599], 162=>[561, 563, 565], 160=>[549, 550]}

我想转换成int,因为我想稍后比较问答id。目前,在散列中循环时必须使用to_i方法,因此我想知道是否有任何方法可以将所有字符串一次转换为int。

最佳答案

你可以假装…

h={"170"=>["599"], "162"=>["561", "563", "565"], "160"=>["549", "550"]}
h.default_proc = proc{|h,k| h.key?(k.to_s) ? h[k.to_s].map(&:to_i) : nil}
p h[162]

保持数据不变。

10-06 11:37