Я посылаю массив ("[1,3,44,2,0]"
) с помощью Ajax PATCH
вызова, и он поступает как:Преобразовать Params массив чисел (строка) в фактический целочисленный массив
Parameters: {"ids"=>"[1,3,44,2,0]"}
Чтобы заражать чек, я использую следующая строка - в которой матч якорь против начала и конца строки, и убеждается, что есть по крайней мере одна цифры, или что числа через запятую:
raise "unexpected ids #{params[:ids]}" unless params[:ids].match(/\A\[(\d+,)*\d+\]\z/)
и сделать действительное число массив из этого, я использую следующий подход (Полоса скобки, разделить на запятой, конвертировать каждый строковый элемент в целое число):
irb> "[1,3,44,2,0]"[1...-1].split(',').map {|e| e.to_i}
=> [1, 3, 44, 2, 0]
Есть лучше (проще, дешевле, быстрее) способ сделать это?
Спасибо! Виноват! Я просто проверил вызов Ajax, и хотя я хотел передать массив как целочисленный массив, я на самом деле вызывал на нем 'JSON.stringify'. Я полностью забыл об этом, и я сделал это, потому что я читал кого-то, рекомендующего этот подход. Это была плохая рекомендация («стягивать»)? Нет ничего плохого в том, что нужно просто передать массив целых чисел? – user664833
Ничего страшного;) – Ursus