在导轨上使用参数值作为循环范围ruby

时间:2015-09-02 10:29:47

标签: ruby-on-rails ruby for-loop

控制器返回错误"范围错误值"当传递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是要创建的组数。

1 个答案:

答案 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,以避免有人通过一个巨大的数字来杀死您的系统。