Реальная проблема, которую я первоначально делал, заключалась в преобразовании хэша массивов в массив хэшей. Если у кого-то есть какие-либо комментарии по выполнению преобразования, тогда это нормально, но на самом деле у меня возникает вопрос, почему порядок их изменения после редактирования изменяется.
Я полностью осведомлен об этом вопросе, но это не дубликат. На самом деле, у меня просто есть особая тема в том порядке, в котором они выходят.
У меня есть один массив и один хэш.
Массив (@headers) содержит список ключей. @contents - это хеш, заполненный массивами. Как я уже объяснил, моя задача - получить массив хэшей. Вот мой код, довольно простой.
@headers = (params[:headers])
puts "ORIGINAL PARAMS"
puts YAML::dump(@headers)
@contentsArray = [] #The purpose of this is to contain hashes of each object
@contents.each_with_index do |page,contentIndex|
@currentPage = Hash.new
@headers.each_with_index do |key, headerIndex|
@currentPage[key] ="testing"
end
puts YAML::dump(@currentPage)
@contentsArray[contentIndex] =@currentPage
end
puts "UPDATED CONTENTS"
puts YAML::dump(@contentsArray[0])
Вот кусочек, который я не могу обернуть вокруг. Ключи исходных параметров находятся в другом порядке, чем обновленный.
Обратите внимание: ставит «ОРИГИНАЛЬНЫЕ ПАРАМЕТРЫ» и ставит «ОБНОВЛЕННОЕ СОДЕРЖАНИЕ». Это их вывод:
ORIGINAL PARAMS
---
- " Page Title "
- " WWW "
- " Description "
- " Keywords "
- " Internal Links "
- " External Links "
- " Content files "
- " Notes "
---
UPDATED CONTENTS
---
" WWW ": page
" Internal Links ": testing
" External Links ": testing
" Description ": testing
" Notes ": testing
" Content files ": testing
" Page Title ": testing
" Keywords ": testing
Почему это?
для записи. Печать @currentPage после цикла заголовка дает следующее:
" WWW ": page
" Internal Links ": page
" External Links ": page
" Description ": page
" Notes ": page
" Content files ": page
" Page Title ": page
" Keywords ": page
Таким образом, это должно быть способом, которым значения и ключи назначаются @currentPage, а не когда он входит в массив.