Я обновил приложение Rails 4 до Rails 5 (точнее 5.2.4.1).
У меня есть конечная точка GET в моем коде с тестом rspe c.
Тестовый код отправляет запрос как:
get :fetch, params: { id: 123, logs: [[1, 2, :weekly], [1, 4, :mothly]] }
Когда контроллер получает запрос, params['logs']
содержит
[["1"], ["2"], ["weekly"], ["1"], ["4"], ["monthly"]]
Это отличается от того, что я ожидал, что
[["1", "2", "weekly"], ["1", "4", "monthly"]]
Входящий URL содержит (после декодирования URL): ?id=123&logs[][]=1&logs[][]=2&logs[][]=weekly&logs[][]=1&logs[][]=4&logs[][]=monthly
Это тот же URL в Rails 4, но он работал как-то. Было ли что-то еще передано? В любом случае, это больше не работает Rails 5. Rails делает c https://edgeguides.rubyonrails.org/action_controller_overview.html#hash -and-array-parameters не упоминает параметры вложенного массива.
Можно ли сделать это работа с Rails 5? Есть ли быстрое решение?
Проблема может быть с rack
gem. Используются две версии: 1.6.13 и 2.2.2.
(я могу отправить всю структуру в виде строки json в одном параметре; я знаю, что это альтернативное решение. Поэтому, пожалуйста, не предложить это как решение.)
Спасибо.