У меня есть два рельсовых сервиса. Один обслуживает пользовательский интерфейс и некоторые базовые функции (UIService), а другой - управляет базовыми моделями и взаимодействиями с базами данных (MainService).вопрос с передачей массива хешей в качестве параметра POST в приложении rails с тифом
В UIService у меня есть форма, которая собирает список элементов и использует это для POST для MainService через jQuery.
Я беру яваскрипт массив и вызвать jQuery.post к UIService первым, как это -
var selected_items = new Array();
// Filled up via the form...
params={"name":$("#name_input").val(),
"items": selected_items };
jQuery.post("/items", params);
Это затем преобразуется в массив хэш с ключом «item_id», а затем направляется в MainService через Typhoeus как это -
items = []
item = {}
params[:items].each do |i|
item[:item_id] = i
end
## Gives me this ---> items = [ {item_id: 189}, {item_id: 187} ]
req = Typhoeus::Request.new("#{my_url}/items/",
method: :POST,
headers: {"Accepts" => "application/json"})
hydra = Typhoeus::Hydra.new
hydra.queue(req)
hydra.run
на MainService, мне нужна схема JSON, чтобы быть в определенном формате. В основном массив элементов ... как это -
{ "name": "test_items", "items": [ {"item_id":"189"},{"item_id": "187"} ] }
Вопрос заключается в том, что, когда я собираю массив из JQuery и передать его в UIService, это выглядит в Params -
[ {item_id: 189}, {item_id: 187} ]
Но, когда он прибывает в MainService, становится это -
{"name"=>"test_items",
"items"=>{"0"=>{"item_id"=>"189"}, "1"=>{"item_id"=>"187"}}
Итак, мне нужен массив элементов, которые будут key'ed с «item_id» и вставляется в Params. Я попробовал несколько способов сохранить его как массив хэшей, но он всегда попадает в неправильный формат в пункт назначения.
Я пробовал различные обходные пути, такие как подтягивание, а не подтягивание, создание собственного массива хэшей и т. Д. Я довольно застрял в этой точке. Есть идеи? Все, что я делаю неправильно или не делаю? Я могу заставить его работать с другими схемами JSON, но мне нужно придерживаться этого.