Преобразовать [объект Object] в JSON - PullRequest
0 голосов
/ 18 февраля 2019

Я должен передать некоторые параметры от JS до рельсов.И поскольку параметры слишком длинные, я должен использовать метод post и сделать параметры JSON, а не string.Но я не могу изменить части обратно на JSON в рельсах.

<ActionController::Parameters {" "=>nil, "test"=>"[object Object]", "controller"=>"super", "action"=>"addArticle"} permitted: false>

И я хочу получить параметры в parms[:test] [sic].Но я могу получить только это:

params[:test]
#=> [object Object]

Итак, пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 18 февраля 2019

Я думаю, что вы передаете объект таким же образом при вызове

$.ajax.post('/to/some/url', data: { test: js_object } );

, где test - это что-то вроде { "some" : "value" }.

Что вам нужно сделать, это сначала привести в соответствие объект.Примерно так должно поступить:

$.ajax.post('/to/some/url', data: { test: JSON.stringify(js_object) } );

Когда вы отправляете объекты напрямую, они преобразуются в строку с помощью JavaScript, а когда JS автоматически преобразует объект в строку, он преобразует его в [object Object].

Чтобы доказать, просто запустите эти строки в консоли одну за другой:

console.log({a:'b'});
console.log({a:'b'}.toString());
console.log(JSON.stringify({a:'b'}));

Вы поймете разницу!

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