Разбор массива из javascript в ruby ​​на рельсах, но получение его в виде строки - PullRequest
1 голос
/ 20 сентября 2019

Так что я получаю массив из параметров (JS)

"[[\"01000290056001\",0],[\"01000290056002\",0]]"

Проблема в кавычках, которые находятся в начале и в конце, ruby ​​читает это не как массив, а как строку.

Вот скриншот с параметрами, которые я получаю от JS (http://prntscr.com/p8fagj)

JS, который используется

$('.button').bind("click", function() {
        var ar_id = $(this).attr("testval");
        collectID = $('input[checked]:not(:checked), input:not([checked]):checked')
            .map( ( _, it ) => [[ it.value, it.checked ? 1 : 0 ]] )
            .get()

        $.get('/places/call_this',
            {
                cad_ids: JSON.stringify(collectID),
                ar_id: ar_id

            },
            function(response) {
                // nothing here
            }
        );
    })

Вопрос в том, как правильно передать массив в Ruby Controller безкавычки? Или как убрать их в контроллере напрямую?

Итак, в конце концов, мне нужно что-то вроде этого

[["01000290056001",0],["01000290056002",0]]

Это будет использоваться для .each функции.

1 Ответ

1 голос
/ 20 сентября 2019

Вы можете использовать JSON.parse:

require 'json'

response = "[[\"01000290056001\",0],[\"01000290056002\",0]]"
parsed_response = JSON.parse(response)
# => [["01000290056001", 0], ["01000290056002", 0]]

parsed_response.each do |item| 
  # whatever you want
end

Это преобразует ваш ответ в массив Ruby для использования.Дайте мне знать, как вы поживаете или если у вас есть какие-либо вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...