Ruby on rails 为什么从未执行ActiveSupport::HashWithInferenceTaccess实例上的迭代循环?

Ruby on rails 为什么从未执行ActiveSupport::HashWithInferenceTaccess实例上的迭代循环?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,r是ActiveSupport::HashWithIndifferentAccess的实例,以下r迭代循环被跳过且未执行(无错误): 这里req_get是request.get的值。reg_get.每个循环都工作正常 我们在r do循环中填充了从不出错的代码,结果是相同的(没有执行)。使用无差异访问迭代此哈希的正确方法是什么?这是rails 3.2应用程序。还尝试了r.map do | k,v |,问题也是一样的 reg_get(request.get)包含传递到控制器的参数[:model]。上

r是
ActiveSupport::HashWithIndifferentAccess
的实例,以下r迭代循环被跳过且未执行(无错误):

这里req_get是request.get的值。reg_get.每个循环都工作正常

我们在r do循环中填充了从不出错的代码,结果是相同的(没有执行)。使用无差异访问迭代此
哈希的正确方法是什么?这是rails 3.2应用程序。还尝试了r.map do | k,v |,问题也是一样的

reg_get(request.get)包含传递到控制器的参数[:model]。上面的代码是通过reg_get解析的


使用
。每个do |键、值|
而不是
|r1 |


并将
r[0]
替换为
k
,将
r[1]
替换为
v

什么是
sub\u hash
,它的定义在哪里?sub_hash在循环之前定义为sub_hash=''。您如何知道该块没有执行?将
sub_hash=''挑剔更改为
sub_hash | |=''
您总是在重新分配
sub_hash
,其次,您将无法访问
循环之外的
sub_hash
,因此,如果您希望随后使用它,则需要在调试中的循环之前定义它。sub_哈希为零。问题也是一样。
req_get.each do |r|
  if r[0].to_s.include?(model)
    sub_hash = ''
    r[1].each do |r1|
       if sub_hash.present?
         sub_hash += '&' + r[0].to_s + '[' + r1[0].to_s  + ']=' + r1[1].to_s
       else
         sub_hash = r[0].to_s + '[' + r1[0].to_s  + ']=' + r1[1].to_s
       end
    end
  end
end