Гарантируются ли параметры массива в рельсах в том порядке, в котором они появляются в URL? - PullRequest
5 голосов
/ 29 сентября 2010

Учитывая следующий URL: http://example.com? Arr [] = привет & arr [] = to & arr [] = вы

Могу ли я рассчитывать на то, что:

params[:arr] == ['hello', 'to', 'you']

?

Я спрашиваю, потому что у меня есть некоторые дополнительные данные, которые будут отправлены вместе с запросом, который необходимо сопоставить каждому значению в параметрах [: arr].

1 Ответ

2 голосов
/ 29 сентября 2010

Да, они есть.

Что ж, может быть, вам пригодится подтверждение из кода, где параметры 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

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

...