Хэш может фактически аккуратно передать переданный ему массив в последовательность ключей и значений.
Например ::1003 *
Hash["a", "apple", "b", "boy"] #=> {"a"=>"apple", "b"=>"boy"}
Если вы передаете нечетное количество аргументов, которые нужно разделить на пары ключ / значение ...
Hash["a", "apple", "b", "boy", "c"] #=> odd number of arguments for Hash
Итак, я почти уверен, что это происходит где-то внутри data_table
метода. Поэтому, пожалуйста, проверьте, не находится ли массив в Hash где-нибудь в последовательности вызовов функций!