控制器返回错误"范围错误值"当传递param作为循环范围限制时,以下是我的代码
def creategroups
require 'fileutils'
@gcount = params[:group_count]
for i in (1..@gcount) do
Fileutils::mkdir_p "/groups/group_#{i}"
end
render json: params
end
此处group_count是要创建的组数。
答案 0 :(得分:1)
从请求中获取参数时,该值通常为String。因此,在以下行中@gcount
是一个字符串,而不是整数。
@gcount = params[:group_count]
你需要施展它。而且,在Ruby中你永远不会使用for循环,而是使用块。
require 'fileutils'
def creategroups
gcount = params[:group_count].to_i
gcount.times do |index|
Fileutils::mkdir_p "/groups/group_#{index}"
end
render json: params
end
或保持缩短
require 'fileutils'
def creategroups
params[:group_count].to_i.times do |index|
Fileutils::mkdir_p "/groups/group_#{index}"
end
render json: params
end
当然,您可能需要验证:group_count
,以避免有人通过一个巨大的数字来杀死您的系统。