param values are HashWithIndifferentAccess?

I have the following code:

params.each do |k, v|
  if k =~ /something/

The "find_by_blah" call fails to return anything and when I print out, I get HashWithIndifferentAccess.

WTF? Is it unreasonable for me to expect the value of a params hash
element to be String?


Hey Wes-

  I think your problem with this is that in an iteration over the params hash, the v part can also be another hash in order to support nested hashes in params. So like this:

>> params = { :foo => 'bar', :baz => {:nik => 'nak'}}
=> {:baz=>{:nik=>"nak"}, :foo=>"bar"}
>> params.each {|k,v| p v }

  So you see one of the values in that hash is a string but another is a nested hash. I think this is what is causing you confusion. You need to write that method in a recursive way to it traverses the sub hashes as well as the top level ones