Каждый раз, когда я хочу POST массива объектов JSON с jQuery в Rails, у меня есть эта проблема. Если я строю массив, я вижу, что jQuery делает свою работу правильно:
"shared_items"=>"[{\"entity_id\":\"253\",\"position\":1},{\"entity_id\":\"823\",\"position\":2}]"
Но если я просто отправлю массив как данные вызова AJAX, я получаю:
"shared_items"=>{"0"=>{"entity_id"=>"253", "position"=>"1"}, "1"=>{"entity_id"=>"823", "position"=>"2"}}
Если я просто отправлю простой массив, он работает:
"shared_items"=>["entity_253"]
Почему Rails меняет массив на этот странный хеш? Единственная причина, которая приходит на ум, состоит в том, что Rails не может правильно понять содержимое, потому что здесь нет типа (есть ли способ установить его в вызове jQuery?):
Processing by SharedListsController#create as
Спасибо!
Update:
Я отправляю данные как массив, а не строку, и массив создается динамически с помощью функции .push()
. Пробовал $.post
и $.ajax
, тот же результат.