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