Параметры массива в рельсах гарантированы в порядке, в котором они появляются в URL?
-
26-09-2019 - |
Вопрос
Учитывая следующий URL: http://example.com aRR[Arr]=hello&arr[-]=TO&arr[]=You
Я могу банк на то, что:
params[:arr] == ['hello', 'to', 'you']
?
Я спрашиваю, потому что у меня есть некоторые дополнительные данные, которые будут отправлены с запросом, который должен быть сопоставлен с каждым из значений параметров [: ARR].
Решение
Да.
Ну, может быть, доказательство от кода, в котором параметры URL-адреса пригодны, будут удобны (я отменил некоторый код из примера):
#
# file: ../rack-1.2.1/lib/rack/utils.rb
#
def normalize_params(params, name, v = nil)
# code ommited for simplicity...
if after == ""
params[k] = v
elsif after == "[]"
params[k] ||= []
# HERE IT IS!
params[k] << v
elsif
# code ommited for simplicity...
# ...
end
Ну, вы должны посмотреть сами, но, как видите, важная часть - это то, где значения просто добавляются в массив - эта операция сохранит заказ.
Не связан с StackOverflow