Setiap kali saya ingin POST array objek JSON dengan jQuery to Rails, saya mengalami masalah ini. Jika saya merangkai array, saya dapat melihat bahwa jQuery melakukan tugasnya dengan benar:
"shared_items"=>"[{\"entity_id\":\"253\",\"position\":1},{\"entity_id\":\"823\",\"position\":2}]"
Tetapi jika saya hanya mengirim array itu sebagai data panggilan AJAX saya mendapatkan:
"shared_items"=>{"0"=>{"entity_id"=>"253", "position"=>"1"}, "1"=>{"entity_id"=>"823", "position"=>"2"}}
Sedangkan jika saya hanya mengirim array biasa itu berfungsi:
"shared_items"=>["entity_253"]
Mengapa Rails mengubah array menjadi hash aneh itu? Satu-satunya alasan yang terlintas dalam pikiran adalah bahwa Rails tidak dapat memahami konten dengan benar karena tidak ada tipe di sini (apakah ada cara untuk mengaturnya dalam panggilan jQuery?):
Processing by SharedListsController#create as
Terima kasih!
Pembaruan:
Saya mengirim data sebagai array, bukan string dan array dibuat secara dinamis menggunakan .push()
fungsi tersebut. Mencoba dengan $.post
dan $.ajax
, hasil yang sama.