Passe arrays e objetos via string de consulta do modo Rack / Rails

Rails tem alguns ótimos padrões para passar objetos complexos via querystring.

Arrays

numbers[]=1&numbers[]=2&numbers[]=3

# rails
params
[:numbers]

# returns
[1, 2, 3]

Objetos

user[id]=1&user[name]=Nathan

# rails
params
[:user]

# returns
{
id
: 1,
name
: "Nathan"
}

Objetos Complexos

users[][id]=1&users[][name]=Nathan&users[][id]=2&users[][name]=Emma

# rails
params
[:users]

# returns
{
users
: [
{
id
: 1,
name
: "Nathan"
},
{
id
: 2,
name
: "Emma"
}
]
}

Experimentar

Você pode experimentar tudo isso em um console Rails.

rails c

data = { numbers: [1,2,3] }
CGI
.unescape data.to_query