6

次の URL の場合: http://example.com?arr[]=hello&arr[]=to&arr[]=you

次の事実に頼ることができますか?

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

?

params[:arr] の各値にマッピングする必要があるリクエストと共に送信される追加データがあるため、お尋ねします。

4

1 に答える 1

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

まあ、自分で見てみる必要がありますが、ご覧のとおり、重要な部分は値が配列に単純に追加される場所です。この操作により順序が維持されます。

于 2010-09-29T18:50:32.730 に答える