Параметры массива в рельсах гарантированы в порядке, в котором они появляются в URL?

StackOverflow https://stackoverflow.com/questions/3822905

Вопрос

Учитывая следующий 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

Ну, вы должны посмотреть сами, но, как видите, важная часть - это то, где значения просто добавляются в массив - эта операция сохранит заказ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top