Ruby on rails 为什么从未执行ActiveSupport::HashWithInferenceTaccess实例上的迭代循环?
r是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]。上
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