rails中的数组参数是否保证按它们在url中出现的顺序排列?

Bra*_*rad 5 ruby url ruby-on-rails params

给出以下网址:http://example.com?arr [] = hello&arr [] = to&arr [] = you

我能否依据以下事实:

params[:arr] == ['hello', 'to', 'you']
Run Code Online (Sandbox Code Playgroud)

我问,因为我有一些额外的数据将与需要映射到params [:arr]中的每个值的请求一起发送.

Rad*_*sky 3

是的,他们是。

好吧,也许从解析 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
Run Code Online (Sandbox Code Playgroud)

好吧,您应该自己看一下,但正如您所看到的,关键部分是将值简单地添加到数组中 - 此操作将保持顺序。